Merged muonspin/musrfit:root6 into master
This commit is contained in:
commit
0593f7c150
314
CMakeLists.txt
Normal file
314
CMakeLists.txt
Normal file
@ -0,0 +1,314 @@
|
||||
# - musrfit
|
||||
cmake_minimum_required(VERSION 3.6)
|
||||
|
||||
project(musrfit VERSION 1.3.0 LANGUAGES C CXX)
|
||||
|
||||
#--- musrfit specific options -------------------------------------------------
|
||||
option(nexus "build optional NeXus support. Needed for ISIS" OFF)
|
||||
option(ASlibs "build optional ASlibs" OFF)
|
||||
option(BMWlibs "build optional BMWlibs" OFF)
|
||||
option(BNMRlibs "build optional beta-NMR libs" OFF)
|
||||
option(qt_based_tools "try to install Qt based tools (musredit, musrWiz, musrStep, mupp)" ON)
|
||||
option(try_OpenMP "try to use OpenMP if available" ON)
|
||||
# define qt_version with possible values 'auto' or version '3', '4', '5'
|
||||
set(qt_version AUTO CACHE STRING "provide a specific Qt version to be used.")
|
||||
set_property(CACHE qt_version PROPERTY STRINGS AUTO 3 4 5)
|
||||
|
||||
#--- set a default build type if none was specified ---------------------------
|
||||
set(default_build_type "Release")
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
|
||||
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
|
||||
STRING "Choose the type of build." FORCE)
|
||||
# Set the possible values of build type for cmake-gui
|
||||
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
|
||||
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
|
||||
endif()
|
||||
|
||||
#--- perform some checks and generate the config.h ----------------------------
|
||||
include(CheckTypeSize)
|
||||
include(CheckIncludeFiles)
|
||||
include(CheckFunctionExists)
|
||||
check_include_files(alloca.h HAVE_ALLOCA_H)
|
||||
check_include_files("sys/ipc.h;sys/shm.h" HAVE_SHMGET)
|
||||
check_function_exists(fork HAVE_FORK)
|
||||
check_include_files(dlfcn.h HAVE_DLFCN_H)
|
||||
check_function_exists(erf HAVE_ERF)
|
||||
check_function_exists(getloadavg HAVE_GETLOADAVG)
|
||||
check_include_files(inttypes.h HAVE_INTTYPES_H)
|
||||
check_include_files(memory.h HAVE_MEMORY_H)
|
||||
check_function_exists(powl HAVE_POWL)
|
||||
check_include_files(memory.h HAVE_MEMORY_H)
|
||||
check_include_files(stdint.h HAVE_STDINT_H)
|
||||
check_include_files(stdlib.h HAVE_STDLIB_H)
|
||||
check_include_files(string.h HAVE_STRING_H)
|
||||
check_include_files(strings.h HAVE_STRINGS_H)
|
||||
check_include_files(sys/stat.h HAVE_SYS_STAT_H)
|
||||
check_include_files(sys/types.h HAVE_SYS_TYPES_H)
|
||||
check_include_files(sys/unistd.h HAVE_UNISTD_H)
|
||||
check_type_size("long double" LONG_DOUBLE)
|
||||
check_type_size("double" DOUBLE)
|
||||
if (${LONG_DOUBLE} GREATER ${DOUBLE})
|
||||
set(HAVE_LONG_DOUBLE 1)
|
||||
set(HAVE_LONG_DOUBLE_WIDER 1)
|
||||
endif (${LONG_DOUBLE} GREATER ${DOUBLE})
|
||||
|
||||
#--- check for all the needed packages ----------------------------------------
|
||||
|
||||
#--- add path to my own find modules and other stuff
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
|
||||
#--- check for git ------------------------------------------------------------
|
||||
find_package(Git REQUIRED)
|
||||
|
||||
#--- check for ROOT -----------------------------------------------------------
|
||||
find_package(ROOT 6.06 REQUIRED COMPONENTS Gui MathMore Minuit2 XMLParser)
|
||||
if (ROOT_mathmore_FOUND)
|
||||
execute_process(COMMAND root-config --bindir OUTPUT_VARIABLE ROOT_BINDIR)
|
||||
string(STRIP ${ROOT_BINDIR} ROOT_BINDIR)
|
||||
execute_process(COMMAND root-config --version OUTPUT_VARIABLE ROOT_VERSION)
|
||||
string(STRIP ${ROOT_VERSION} ROOT_VERSION)
|
||||
message("-- Found ROOT: ${ROOT_BINDIR} (found version: ${ROOT_VERSION})")
|
||||
#---Define useful ROOT functions and macros (e.g. ROOT_GENERATE_DICTIONARY)
|
||||
include(${ROOT_USE_FILE})
|
||||
endif (ROOT_mathmore_FOUND)
|
||||
|
||||
#--- check for boost ----------------------------------------------------------
|
||||
find_package(Boost REQUIRED)
|
||||
|
||||
#--- check for gsl ------------------------------------------------------------
|
||||
find_package(GSL REQUIRED)
|
||||
|
||||
#--- check for fftw3 ----------------------------------------------------------
|
||||
find_package(FFTW3 REQUIRED)
|
||||
if (FFTW3_THREAD_FOUND)
|
||||
set(HAVE_LIBFFTW3_THREADS 1 CACHE INTERNAL "fftw3_threads are available")
|
||||
endif (FFTW3_THREAD_FOUND)
|
||||
if (FFTW3F_THREAD_FOUND)
|
||||
set(HAVE_LIBFFTW3F_THREADS 1 CACHE INTERNAL "fftw3f_threads are available")
|
||||
endif (FFTW3F_THREAD_FOUND)
|
||||
|
||||
#--- check for libxml2 --------------------------------------------------------
|
||||
find_package(LibXml2 REQUIRED)
|
||||
|
||||
#--- check for OpenMP ---------------------------------------------------------
|
||||
if (try_OpenMP AND NOT APPLE)
|
||||
find_package(OpenMP)
|
||||
if (OpenMP_FOUND)
|
||||
add_definitions(-DHAVE_GOMP)
|
||||
set(HAVE_GOMP 1 CACHE INTERNAL "Have GOMP")
|
||||
endif (OpenMP_FOUND)
|
||||
endif (try_OpenMP AND NOT APPLE)
|
||||
|
||||
#--- check for Qt -------------------------------------------------------------
|
||||
if (qt_based_tools)
|
||||
# check for any Qt, i.e. AUTO
|
||||
if (qt_version STREQUAL AUTO)
|
||||
# first try Qt5
|
||||
# Find the QtCore library
|
||||
find_package(Qt5Core)
|
||||
if (Qt5Core_FOUND)
|
||||
# Find the QtWidgets library
|
||||
find_package(Qt5Widgets CONFIG REQUIRED)
|
||||
# Find the QtXml library
|
||||
find_package(Qt5Xml CONFIG REQUIRED)
|
||||
# Find the QtNetwork library
|
||||
find_package(Qt5Network CONFIG REQUIRED)
|
||||
# Find the QtSvg library
|
||||
find_package(Qt5Svg CONFIG REQUIRED)
|
||||
# Fing the QtPrintSupport
|
||||
find_package(Qt5PrintSupport CONFIG REQUIRED)
|
||||
endif (Qt5Core_FOUND)
|
||||
|
||||
# if Qt5 is not found, try Qt4
|
||||
if (NOT Qt5Core_FOUND)
|
||||
find_package(Qt4 COMPONENTS QtGui QtWebKit QtXml)
|
||||
endif (NOT Qt5Core_FOUND)
|
||||
|
||||
# if Qt5 and Qt4 is not found try Qt3. Hopefully you never reach this point
|
||||
if (NOT Qt5Core_FOUND)
|
||||
if (NOT Qt4_FOUND)
|
||||
find_package(Qt3)
|
||||
endif (NOT Qt4_FOUND)
|
||||
endif (NOT Qt5Core_FOUND)
|
||||
endif (qt_version STREQUAL AUTO)
|
||||
|
||||
# check specifically for Qt5
|
||||
if (qt_version STREQUAL 5)
|
||||
# Find the QtCore library
|
||||
find_package(Qt5Core)
|
||||
if (Qt5Core_FOUND)
|
||||
# Find the QtWidgets library
|
||||
find_package(Qt5Widgets CONFIG REQUIRED)
|
||||
# Find the QtXml library
|
||||
find_package(Qt5Xml CONFIG REQUIRED)
|
||||
# Find the QtNetwork library
|
||||
find_package(Qt5Network CONFIG REQUIRED)
|
||||
# Find the QtSvg library
|
||||
find_package(Qt5Svg CONFIG REQUIRED)
|
||||
# Fing the QtPrintSupport
|
||||
find_package(Qt5PrintSupport CONFIG REQUIRED)
|
||||
else (Qt5Core_FOUND)
|
||||
message(FATAL_ERROR "Couldn't find the specifically requested Qt5 version.")
|
||||
endif (Qt5Core_FOUND)
|
||||
endif (qt_version STREQUAL 5)
|
||||
|
||||
# check specifically for Qt4
|
||||
if (qt_version STREQUAL 4)
|
||||
find_package(Qt4 COMPONENTS QtGui QtWebKit QtXml)
|
||||
if (NOT Qt4_FOUND)
|
||||
message(FATAL_ERROR "Couldn't find the specifically requested Qt4 version.")
|
||||
endif (NOT Qt4_FOUND)
|
||||
endif (qt_version STREQUAL 4)
|
||||
|
||||
# check specifically for Qt3
|
||||
if (qt_version STREQUAL 3)
|
||||
find_package(Qt3)
|
||||
if (NOT QT_FOUND)
|
||||
message(FATAL_ERROR "Couldn't find the specifically requested Qt3 version.")
|
||||
endif (NOT QT_FOUND)
|
||||
endif (qt_version STREQUAL 3)
|
||||
endif (qt_based_tools)
|
||||
|
||||
#--- if NeXus check also for HDF4, HDF5, and MXML -----------------------------
|
||||
if (nexus)
|
||||
find_package(HDF5 COMPONENTS CXX REQUIRED )
|
||||
#//as35 - STILL NEEDED?? -> find_package(HDF4 REQUIRED)
|
||||
find_package(MXML REQUIRED)
|
||||
find_package(NeXus REQUIRED)
|
||||
add_definitions(-DPNEXUS_ENABLED)
|
||||
endif (nexus)
|
||||
|
||||
#--- check for Cuba lib if BMWlibs are enabled --------------------------------
|
||||
#//as35 probably always stick to the internal one ...
|
||||
|
||||
#--- all checks done -> feed config.h -----------------------------------------
|
||||
set(HAVE_CONFIG_H 1 CACHE INTERNAL "config.h is available")
|
||||
configure_file(${CMAKE_SOURCE_DIR}/cmake/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
|
||||
|
||||
#--- propagate to the sub-directories -----------------------------------------
|
||||
add_subdirectory(src)
|
||||
|
||||
#--- write summary of the installation
|
||||
message("")
|
||||
message("|-----------------------------------------------------------------------|")
|
||||
message("| |")
|
||||
message("| Summary |")
|
||||
message("| |")
|
||||
message("|-----------------------------------------------------------------------|")
|
||||
message("")
|
||||
message(" System: ${CMAKE_HOST_SYSTEM_NAME} ${CMAKE_SYSTEM_PROCESSOR} - ${CMAKE_HOST_SYSTEM_VERSION}")
|
||||
message(" -------")
|
||||
message("")
|
||||
message(" Build Type: ${CMAKE_BUILD_TYPE}")
|
||||
message(" -----------")
|
||||
message("")
|
||||
message(" Requirements:")
|
||||
message(" -------------")
|
||||
message("")
|
||||
message(" FFTW3 found in ${FFTW3_INCLUDE_DIR}")
|
||||
message(" GSL found in ${GSL_INCLUDE_DIRS}")
|
||||
message(" BOOST found in ${Boost_INCLUDE_DIRS}")
|
||||
message(" LibXML2 found in ${LIBXML2_INCLUDE_DIR}")
|
||||
message(" ROOT found in ${ROOT_INCLUDE_DIRS}")
|
||||
if (OpenMP_FOUND)
|
||||
if (OpenMP_CXX_VERSION)
|
||||
message(" OpenMP found (version ${OpenMP_CXX_VERSION})")
|
||||
else (OpenMP_CXX_VERSION)
|
||||
message(" OpenMP found")
|
||||
endif (OpenMP_CXX_VERSION)
|
||||
endif (OpenMP_FOUND)
|
||||
|
||||
if (nexus)
|
||||
message("")
|
||||
#//as35 message(" HDF4 found in ${HDF4_INCLUDE_DIRS}")
|
||||
message(" HDF5 found in ${HDF5_INCLUDE_DIRS}")
|
||||
message(" NeXus found in ${NEXUS_INCLUDE_DIR}")
|
||||
endif (nexus)
|
||||
|
||||
message("")
|
||||
if (qt_based_tools)
|
||||
if (Qt5Core_FOUND)
|
||||
message(" Qt found in ${Qt5Core_INCLUDE_DIRS} (Version: ${Qt5Core_VERSION})")
|
||||
else (Qt5Core_FOUND)
|
||||
if (Qt4_FOUND)
|
||||
message(" Qt found (Version: ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH})")
|
||||
else (Qt4_FOUND)
|
||||
if (QT_FOUND)
|
||||
message(" Qt found (Version: ${QT_VERSION})")
|
||||
endif (QT_FOUND)
|
||||
endif (Qt4_FOUND)
|
||||
endif (Qt5Core_FOUND)
|
||||
endif (qt_based_tools)
|
||||
message("")
|
||||
message(" Features:")
|
||||
message(" ---------")
|
||||
message("")
|
||||
message(" Supported muSR file formates:")
|
||||
message(" MusrRoot : yes")
|
||||
message(" ROOT (LEM) : yes")
|
||||
message(" MUD (triumf) : yes")
|
||||
message(" PSI-BIN : yes")
|
||||
message(" PSI-MDU : yes")
|
||||
message(" WKM (deprecated) : yes")
|
||||
if (nexus)
|
||||
message(" NeXus : yes")
|
||||
else (nexus)
|
||||
message(" NeXus : no")
|
||||
endif (nexus)
|
||||
|
||||
message("")
|
||||
message(" External user-function libraries:")
|
||||
if (ASlibs)
|
||||
message(" ASlibs : yes")
|
||||
else (ASlibs)
|
||||
message(" ASlibs : no")
|
||||
endif (ASlibs)
|
||||
if (BMWlibs)
|
||||
message(" BMWlibs : yes")
|
||||
else (BMWlibs)
|
||||
message(" BMWlibs : no")
|
||||
endif (BMWlibs)
|
||||
if (BNMRlibs)
|
||||
message(" BNMRlibs : yes")
|
||||
else (BNMRlibs)
|
||||
message(" BNMRlibs : no")
|
||||
endif (BNMRlibs)
|
||||
|
||||
if (qt_based_tools)
|
||||
if (Qt5Core_FOUND)
|
||||
message("")
|
||||
message(" Qt5 based tools:")
|
||||
message(" musredit, musrStep, musrWiz, mupp : yes")
|
||||
endif (Qt5Core_FOUND)
|
||||
if (Qt4_FOUND)
|
||||
message("")
|
||||
message(" Qt4 based tools (deprecated):")
|
||||
message(" musredit : yes")
|
||||
endif (Qt4_FOUND)
|
||||
if (QT_FOUND)
|
||||
message("")
|
||||
message(" Qt3 based tools (outdated):")
|
||||
message(" musrgui : yes")
|
||||
endif (QT_FOUND)
|
||||
if (NOT Qt5Core_FOUND AND NOT Qt4_FOUND AND NOT QT_FOUND)
|
||||
message("")
|
||||
message(" NO Qt based tools will be installed since Qt is not found or not installed on the system")
|
||||
endif (NOT Qt5Core_FOUND AND NOT Qt4_FOUND AND NOT QT_FOUND)
|
||||
else (qt_based_tools)
|
||||
message("")
|
||||
message(" Qt based tools (musredit, musrStep, musrWiz, mupp) have been disabled")
|
||||
endif (qt_based_tools)
|
||||
message("")
|
||||
message(" Installation directories:")
|
||||
message(" -------------------------")
|
||||
message("")
|
||||
message(" Programs : ${CMAKE_INSTALL_PREFIX}/bin")
|
||||
message(" XML configuration files : " $ENV{HOME} "/.musrfit")
|
||||
message(" Documentation : ${CMAKE_INSTALL_PREFIX}/share/doc/musrfit")
|
||||
message("")
|
||||
message("-------------------------------------------------------------------------")
|
||||
message("")
|
||||
|
||||
#--- end ----------------------------------------------------------------------
|
69
INSTALL
69
INSTALL
@ -1,17 +1,80 @@
|
||||
#---------------------------------------------------------------------
|
||||
# INSTALL
|
||||
# AS/BMW, 2014/02/11; 2011/01/27
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
To get it all build:
|
||||
There are currently 2 wasy to build musrfit:
|
||||
|
||||
1) via the automake tool chain (this will phase out until 2019)
|
||||
2) via the cmake tool chain (this will be the default starting from now)
|
||||
|
||||
In the following it is assumed that the system variable ROOTSYS is already
|
||||
defined and pointing to the place where CERN/ROOT is installed.
|
||||
|
||||
#----------------------------------
|
||||
# Install via automake tool chain
|
||||
#----------------------------------
|
||||
|
||||
To get it build:
|
||||
|
||||
sh autogen.sh
|
||||
./configure --prefix=/opt/cern/root (or where ever musrfit should be installed)
|
||||
./configure --prefix=$ROOTSYS (or where ever musrfit should be installed)
|
||||
make
|
||||
make install (as superuser -- maybe)
|
||||
/sbin/ldconfig (as superuser)
|
||||
|
||||
configure comes with a couple of options. For details either execute
|
||||
|
||||
./configure --help
|
||||
|
||||
or check under http://lmu.web.psi.ch/musrfit/user/MUSR/MusrFitSetup.html
|
||||
for a more detailed description.
|
||||
|
||||
An example with NeXus support and BMWlibs needed would look like this
|
||||
|
||||
sh autogen.sh
|
||||
./configure --enable-NeXus --enable-BMWlibs --prefix=$ROOTSYS
|
||||
make
|
||||
make install (as superuser -- maybe)
|
||||
/sbin/ldconfig (as superuser)
|
||||
|
||||
In the optimal case, everything is set up ;-)
|
||||
|
||||
#----------------------------------
|
||||
# Install via cmake tool chain
|
||||
#----------------------------------
|
||||
|
||||
cmake minimal required version is 3.6.
|
||||
|
||||
musrfit supports only out-of-source cmake build! Hence, go to the musrfit
|
||||
directory and
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ../ -DCMAKE_INSTALL_PREFIX=$ROOTSYS (or where ever musrfit should be installed)
|
||||
cmake --build ./ --clean-first
|
||||
make install (as superuser -- maybe)
|
||||
/sbin/ldconfig (as superuser)
|
||||
|
||||
cmake configuration allows a couple of switches. For details check the user
|
||||
docu under
|
||||
|
||||
http://lmu.web.psi.ch/musrfit/user/MUSR/MusrFitSetup.html
|
||||
|
||||
An example with NeXus support and BMWlibs needed would look like this
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ../ -Dnexus=1 -DBMWlibs=1 -DCMAKE_INSTALL_PREFIX=$ROOTSYS
|
||||
cmake --build ./ --clean-first
|
||||
make install (as superuser -- maybe)
|
||||
/sbin/ldconfig (as superuser)
|
||||
|
||||
In the optimal case, everything is set up ;-)
|
||||
|
||||
#----------------------------------
|
||||
# Link to the docu
|
||||
#----------------------------------
|
||||
|
||||
More information about the software requirements and the installation can be found at:
|
||||
|
||||
http://lmu.web.psi.ch/musrfit/user/MUSR/MusrFitSetup.html
|
||||
|
151
cmake/FindFFTW3.cmake
Normal file
151
cmake/FindFFTW3.cmake
Normal file
@ -0,0 +1,151 @@
|
||||
# - Find fftw3 library
|
||||
# Find the native FFTW3 includes and library
|
||||
# This module defines
|
||||
# FFTW3_INCLUDE_DIR, where to find fftw3.h, etc.
|
||||
# ---
|
||||
# FFTW3_LIBRARY, library to link against to use FFTW3
|
||||
# FFTW3_OMP_LIBRARY, library to link against to use FFTW3_omp
|
||||
# FFTW3_THREADS_LIBRARY, library to link against to use FFTW3_threads
|
||||
# FFTW3_FOUND, if false, do not try to use FFTW3.
|
||||
# FFTW3_OMP_FOUND, if false, do not try to use OpenMP FFTW3.
|
||||
# FFTW3_THREADS_FOUND, if false, do not try to use threaded FFTW3.
|
||||
# ---
|
||||
# FFTW3L_LIBRARY, library to link against to use FFTW3l
|
||||
# FFTW3L_OMP_LIBRARY, library to link against to use FFTW3l_omp
|
||||
# FFTW3L_THREADS_LIBRARY, library to link against to use FFTW3l_threads
|
||||
# FFTW3L_FOUND, if false, do not try to use FFTW3l.
|
||||
# FFTW3L_OMP_FOUND, if false, do not try to use OpenMP FFTW3l.
|
||||
# FFTW3L_THREADS_FOUND, if false, do not try to use threaded FFTW3l.
|
||||
# ---
|
||||
# FFTW3F_LIBRARY, library to link against to use FFTW3f
|
||||
# FFTW3F_OMP_LIBRARY, library to link against to use FFTW3f_omp
|
||||
# FFTW3F_THREADS_LIBRARY, library to link against to use FFTW3f_threads
|
||||
# FFTW3F_FOUND, if false, do not try to use FFTW3f.
|
||||
# FFTW3F_OMP_FOUND, if false, do not try to use OpenMP FFTW3f.
|
||||
# FFTW3F_THREADS_FOUND, if false, do not try to use threaded FFTW3f.
|
||||
# ---
|
||||
# FFTW3Q_LIBRARY, library to link against to use FFTW3q
|
||||
# FFTW3Q_OMP_LIBRARY, library to link against to use FFTW3q_omp
|
||||
# FFTW3Q_THREADS_LIBRARY, library to link against to use FFTW3q_threads
|
||||
# FFTW3Q_FOUND, if false, do not try to use FFTW3q.
|
||||
# FFTW3Q_OMP_FOUND, if false, do not try to use OpenMP FFTW3q.
|
||||
# FFTW3Q_THREADS_FOUND, if false, do not try to use threaded FFTW3q.
|
||||
|
||||
find_path(FFTW3_INCLUDE_DIR fftw3.h
|
||||
HINTS "/usr/include" "/opt/local/include"
|
||||
)
|
||||
|
||||
# find position of fftw3.h from the end
|
||||
string(FIND "${FFTW3_INCLUDE_DIR}" "/fftw3.h" pos REVERSE)
|
||||
# truncate the string
|
||||
string(SUBSTRING "${FFTW3_INCLUDE_DIR}" 0 ${pos} substr)
|
||||
set(FFTW3_INCLUDE_DIR ${substr})
|
||||
unset(substr)
|
||||
|
||||
find_library(FFTW3_LIBRARY fftw3)
|
||||
find_library(FFTW3_OMP_LIBRARY fftw3_omp)
|
||||
find_library(FFTW3_THREAD_LIBRARY fftw3_threads)
|
||||
find_library(FFTW3L_LIBRARY fftw3l)
|
||||
find_library(FFTW3L_OMP_LIBRARY fftw3l_omp)
|
||||
find_library(FFTW3L_THREAD_LIBRARY fftw3l_threads)
|
||||
find_library(FFTW3F_LIBRARY fftw3f)
|
||||
find_library(FFTW3F_OMP_LIBRARY fftw3f_omp)
|
||||
find_library(FFTW3F_THREAD_LIBRARY fftw3f_threads)
|
||||
find_library(FFTW3Q_LIBRARY fftw3q)
|
||||
find_library(FFTW3Q_OMP_LIBRARY fftw3q_omp)
|
||||
find_library(FFTW3Q_THREAD_LIBRARY fftw3q_threads)
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set FFTW3_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
|
||||
find_package_handle_standard_args(FFTW3
|
||||
REQUIRED_VARS FFTW3_LIBRARY FFTW3_INCLUDE_DIR
|
||||
VERSION_VAR "3")
|
||||
find_package_handle_standard_args(FFTW3_OMP
|
||||
REQUIRED_VARS FFTW3_OMP_LIBRARY FFTW3_INCLUDE_DIR
|
||||
VERSION_VAR "3")
|
||||
find_package_handle_standard_args(FFTW3_THREAD
|
||||
REQUIRED_VARS FFTW3_THREAD_LIBRARY FFTW3_INCLUDE_DIR
|
||||
VERSION_VAR "3")
|
||||
|
||||
find_package_handle_standard_args(FFTW3L
|
||||
REQUIRED_VARS FFTW3L_LIBRARY FFTW3_INCLUDE_DIR
|
||||
VERSION_VAR "3")
|
||||
find_package_handle_standard_args(FFTW3L_OMP
|
||||
REQUIRED_VARS FFTW3L_OMP_LIBRARY FFTW3_INCLUDE_DIR
|
||||
VERSION_VAR "3")
|
||||
find_package_handle_standard_args(FFTW3L_THREAD
|
||||
REQUIRED_VARS FFTW3L_THREAD_LIBRARY FFTW3_INCLUDE_DIR
|
||||
VERSION_VAR "3")
|
||||
|
||||
find_package_handle_standard_args(FFTW3F
|
||||
REQUIRED_VARS FFTW3F_LIBRARY FFTW3_INCLUDE_DIR
|
||||
VERSION_VAR "3")
|
||||
find_package_handle_standard_args(FFTW3F_OMP
|
||||
REQUIRED_VARS FFTW3F_OMP_LIBRARY FFTW3_INCLUDE_DIR
|
||||
VERSION_VAR "3")
|
||||
find_package_handle_standard_args(FFTW3F_THREAD
|
||||
REQUIRED_VARS FFTW3F_THREAD_LIBRARY FFTW3_INCLUDE_DIR
|
||||
VERSION_VAR "3")
|
||||
|
||||
find_package_handle_standard_args(FFTW3Q
|
||||
REQUIRED_VARS FFTW3Q_LIBRARY FFTW3_INCLUDE_DIR
|
||||
VERSION_VAR "3")
|
||||
find_package_handle_standard_args(FFTW3Q_OMP
|
||||
REQUIRED_VARS FFTW3Q_OMP_LIBRARY FFTW3_INCLUDE_DIR
|
||||
VERSION_VAR "3")
|
||||
find_package_handle_standard_args(FFTW3Q_THREAD
|
||||
REQUIRED_VARS FFTW3Q_THREAD_LIBRARY FFTW3_INCLUDE_DIR
|
||||
VERSION_VAR "3")
|
||||
|
||||
if (NOT FFTW3_FOUND)
|
||||
unset(FFTW3_LIBRARY)
|
||||
endif()
|
||||
if (NOT FFTW3_OMP_FOUND)
|
||||
unset(FFTW3_OMP_LIBRARY)
|
||||
endif()
|
||||
if (NOT FFTW3_THREAD_FOUND)
|
||||
unset(FFTW3_THREAD_LIBRARY)
|
||||
endif()
|
||||
|
||||
if (NOT FFTW3L_FOUND)
|
||||
unset(FFTW3L_LIBRARY)
|
||||
endif()
|
||||
if (NOT FFTW3L_OMP_FOUND)
|
||||
unset(FFTW3L_OMP_LIBRARY)
|
||||
endif()
|
||||
if (NOT FFTW3L_THREAD_FOUND)
|
||||
unset(FFTW3L_THREAD_LIBRARY)
|
||||
endif()
|
||||
|
||||
if (NOT FFTW3F_FOUND)
|
||||
unset(FFTW3F_LIBRARY)
|
||||
endif()
|
||||
if (NOT FFTW3F_OMP_FOUND)
|
||||
unset(FFTW3F_OMP_LIBRARY)
|
||||
endif()
|
||||
if (NOT FFTW3F_THREAD_FOUND)
|
||||
unset(FFTW3F_THREAD_LIBRARY)
|
||||
endif()
|
||||
|
||||
if (NOT FFTW3Q_FOUND)
|
||||
unset(FFTW3Q_LIBRARY)
|
||||
endif()
|
||||
if (NOT FFTW3Q_OMP_FOUND)
|
||||
unset(FFTW3Q_OMP_LIBRARY)
|
||||
endif()
|
||||
if (NOT FFTW3Q_THREAD_FOUND)
|
||||
unset(FFTW3Q_THREAD_LIBRARY)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(
|
||||
FFTW3_INCLUDE_DIR
|
||||
FFTW3_LIBRARY FFTW3_OMP_LIBRARY FFTW3_THREAD_LIBRARY
|
||||
FFTW3L_LIBRARY FFTW3L_OMP_LIBRARY FFTW3L_THREAD_LIBRARY
|
||||
FFTW3F_LIBRARY FFTW3F_OMP_LIBRARY FFTW3F_THREAD_LIBRARY
|
||||
FFTW3Q_LIBRARY FFTW3Q_OMP_LIBRARY FFTW3Q_THREAD_LIBRARY
|
||||
)
|
||||
|
||||
if (FFTW3_FOUND)
|
||||
message("-- Found FFTW3: ${FFTW3_INCLUDE_DIR}")
|
||||
endif (FFTW3_FOUND)
|
34
cmake/FindMXML.cmake
Normal file
34
cmake/FindMXML.cmake
Normal file
@ -0,0 +1,34 @@
|
||||
# - find MXML
|
||||
# find the MXML lib and includes
|
||||
# This module defines
|
||||
# LIBMXML_INCLUDE_DIR, where to find mxml.h
|
||||
# LIBMXML_LIBRARY, library to link against
|
||||
# LIBMXML_FOUND, if false, do not try to use the MXML lib
|
||||
|
||||
find_path(LIBMXML_INCLUDE_DIR mxml.h
|
||||
HINT "/usr/include"
|
||||
)
|
||||
# find position of mxml.h from the end
|
||||
string(FIND "${LIBMXML_INCLUDE_DIR}" "/mxml.h" pos REVERSE)
|
||||
# truncate the string
|
||||
string(SUBSTRING "${LIBMXML_INCLUDE_DIR}" 0 ${pos} substr)
|
||||
set(LIBMXML_INCLUDE_DIR ${substr})
|
||||
unset(substr)
|
||||
|
||||
find_library(LIBMXML_LIBRARY mxml)
|
||||
|
||||
# get version string
|
||||
# currently do not know from where to get it automatically
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set LIBMXML_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(MXML
|
||||
REQUIRED_VARS LIBMXML_LIBRARY LIBMXML_INCLUDE_DIR)
|
||||
|
||||
if (NOT LIBMXML_FOUND)
|
||||
unset(LIBMXML_LIBRARY)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(LIBMXML_INCLUDE_DIR LIBMXML_LIBRARY)
|
||||
|
45
cmake/FindNeXus.cmake
Normal file
45
cmake/FindNeXus.cmake
Normal file
@ -0,0 +1,45 @@
|
||||
# - Find NeXus library
|
||||
# Find the native NEXUS includes and library
|
||||
# This module defines
|
||||
# NEXUS_INCLUDE_DIR, where to find NeXus.h, etc.
|
||||
# NEXUS_LIBRARY, library to link against to use NEXUS
|
||||
# NEXUS_FOUND, if false, do not try to use NEXUS.
|
||||
|
||||
find_path(NEXUS_INCLUDE_DIR napi.h
|
||||
HINTS "/usr/local/include" "/opt/nexus/include" "/usr/local/include/nexus"
|
||||
)
|
||||
# find position of napi.h from the end
|
||||
string(FIND "${NEXUS_INCLUDE_DIR}" "/napi.h" pos REVERSE)
|
||||
# truncate the string
|
||||
string(SUBSTRING "${NEXUS_INCLUDE_DIR}" 0 ${pos} substr)
|
||||
set(NEXUS_INCLUDE_DIR ${substr})
|
||||
unset(substr)
|
||||
|
||||
find_library(NEXUS_LIBRARY NeXus
|
||||
HINTS "/usr/lib" "/usr/lib64" "/usr/local/lib" "/usr/local/lib64" "/opt/nexus/lib")
|
||||
|
||||
# get version string
|
||||
if (NEXUS_INCLUDE_DIR AND EXISTS ${NEXUS_INCLUDE_DIR}/napi.h)
|
||||
file(STRINGS "${NEXUS_INCLUDE_DIR}/napi.h" NEXUS_version_str
|
||||
REGEX "^#define[\t ]+NEXUS_VERSION[\t ].*")
|
||||
|
||||
string(REGEX REPLACE "^#define[\t ]+NEXUS_VERSION[\t ]+\"([^\"]*).*"
|
||||
"\\1" NEXUS_VERSION_STRING "${NEXUS_version_str}")
|
||||
unset(NEXUS_version_str)
|
||||
endif()
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set NEXUS_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(NEXUS
|
||||
REQUIRED_VARS NEXUS_LIBRARY NEXUS_INCLUDE_DIR
|
||||
VERSION_VAR NEXUS_VERSION_STRING)
|
||||
|
||||
if (NOT NEXUS_FOUND)
|
||||
unset(NEXUS_LIBRARY)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(NEXUS_INCLUDE_DIR NEXUS_LIBRARY)
|
||||
|
||||
|
||||
|
67
cmake/config.h.in
Normal file
67
cmake/config.h.in
Normal file
@ -0,0 +1,67 @@
|
||||
// config.h
|
||||
|
||||
#define PACKAGE_VERSION "@PROJECT_VERSION@"
|
||||
|
||||
// define to 1 if you have fork and it should be used
|
||||
#cmakedefine HAVE_FORK 1
|
||||
|
||||
// define to 1 if you have <alloca.h> and it should be used
|
||||
#cmakedefine HAVE_ALLOCA_H 1
|
||||
|
||||
// Define to 1 if you have the <dlfcn.h> header file.
|
||||
#cmakedefine HAVE_DLFCN_H 1
|
||||
|
||||
// Define to 1 if you have the `erf' function.
|
||||
#cmakedefine HAVE_ERF 1
|
||||
|
||||
// Define to 1 if you have the `getloadavg' function.
|
||||
#cmakedefine HAVE_GETLOADAVG 1
|
||||
|
||||
// Define to 1 if gomp is available */
|
||||
#cmakedefine HAVE_GOMP 1
|
||||
|
||||
// Define to 1 if you have the <inttypes.h> header file.
|
||||
#cmakedefine HAVE_INTTYPES_H 1
|
||||
|
||||
// Define to 1 if the type `long double' works and has more range or precision than `double'.
|
||||
#cmakedefine HAVE_LONG_DOUBLE 1
|
||||
|
||||
// Define to 1 if the type `long double' works and has more range or precision than `double'.
|
||||
#cmakedefine HAVE_LONG_DOUBLE_WIDER 1
|
||||
|
||||
// Define to 1 if fftw3f_threads are available
|
||||
#cmakedefine HAVE_LIBFFTW3F_THREADS 1
|
||||
|
||||
// Define to 1 if fftw3_threads are available
|
||||
#cmakedefine HAVE_LIBFFTW3_THREADS 1
|
||||
|
||||
// Define to 1 if you have the <memory.h> header file.
|
||||
#cmakedefine HAVE_MEMORY_H 1
|
||||
|
||||
// Define to 1 if you have the `powl' function.
|
||||
#cmakedefine HAVE_POWL 1
|
||||
|
||||
// Define to 1 if you have the `shmget' function.
|
||||
#cmakedefine HAVE_SHMGET 1
|
||||
|
||||
// Define to 1 if you have the <stdint.h> header file.
|
||||
#cmakedefine HAVE_STDINT_H 1
|
||||
|
||||
// Define to 1 if you have the <stdlib.h> header file.
|
||||
#cmakedefine HAVE_STDLIB_H 1
|
||||
|
||||
// Define to 1 if you have the <string.h> header file.
|
||||
#cmakedefine HAVE_STRING_H 1
|
||||
|
||||
// Define to 1 if you have the <strings.h> header file.
|
||||
#cmakedefine HAVE_STRINGS_H 1
|
||||
|
||||
// Define to 1 if you have the <sys/stat.h> header file.
|
||||
#cmakedefine HAVE_SYS_STAT_H 1
|
||||
|
||||
// Define to 1 if you have the <sys/types.h> header file.
|
||||
#cmakedefine HAVE_SYS_TYPES_H 1
|
||||
|
||||
// Define to 1 if you have the <unistd.h> header file.
|
||||
#cmakedefine HAVE_UNISTD_H 1
|
||||
|
30
cmake/configure_musrfit_version_file.cmake.in
Normal file
30
cmake/configure_musrfit_version_file.cmake.in
Normal file
@ -0,0 +1,30 @@
|
||||
# configure_musrfit_version_file.cmake.in:
|
||||
set(SRC_DIR "@CMAKE_SOURCE_DIR@")
|
||||
set(BIN_DIR "@CMAKE_CURRENT_BINARY_DIR@")
|
||||
|
||||
# Set variables
|
||||
set(CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@")
|
||||
set(MUSRFIT_VERSION "@MUSRFIT_VERSION@")
|
||||
|
||||
# Get the current working branch
|
||||
execute_process(
|
||||
COMMAND git rev-parse --abbrev-ref HEAD
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE GIT_BRANCH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
# Get the latest abbreviated commit hash of the working branch
|
||||
execute_process(
|
||||
COMMAND git log -1 --pretty="%h, %ci"
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE GIT_CURRENT_SHA1
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
configure_file(
|
||||
${SRC_DIR}/cmake/git-revision.h.in
|
||||
${BIN_DIR}/git-revision.h
|
||||
@ONLY
|
||||
)
|
||||
# EOF
|
8
cmake/git-revision.h.in
Normal file
8
cmake/git-revision.h.in
Normal file
@ -0,0 +1,8 @@
|
||||
#ifndef GIT_VERSION_H
|
||||
#define GIT_VERSION_H
|
||||
|
||||
#define GIT_BRANCH "@GIT_BRANCH@"
|
||||
#define GIT_CURRENT_SHA1 @GIT_CURRENT_SHA1@
|
||||
|
||||
#endif // GIT_VERSION_H
|
||||
|
4
cmake/musrfit-info.h.in
Normal file
4
cmake/musrfit-info.h.in
Normal file
@ -0,0 +1,4 @@
|
||||
//--- This file is generated by cmake -----------------------------------------
|
||||
|
||||
#define MUSRFIT_PREFIX "@CMAKE_INSTALL_PREFIX@"
|
||||
#define MUSRFIT_DOC_DIR "@CMAKE_INSTALL_PREFIX@/share/doc/musrfit"
|
@ -1,7 +1,7 @@
|
||||
AC_REVISION([m4_esyscmd_s([git describe --always])])
|
||||
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([musrfit],[1.2.0],[andreas.suter@psi.ch])
|
||||
AC_INIT([musrfit],[1.3.0],[andreas.suter@psi.ch])
|
||||
AC_CONFIG_AUX_DIR(admin)
|
||||
AC_CANONICAL_HOST
|
||||
#AC_MSG_RESULT([${host} ${host_cpu} ${host_vendor} ${host_os}])
|
||||
@ -35,7 +35,7 @@ dnl -----------------------------------------------
|
||||
|
||||
#release versioning
|
||||
MUSR_MAJOR_VERSION=1
|
||||
MUSR_MINOR_VERSION=2
|
||||
MUSR_MINOR_VERSION=3
|
||||
MUSR_MICRO_VERSION=0
|
||||
|
||||
#release versioning
|
||||
@ -54,7 +54,7 @@ PSIBIN_MINOR_VERSION=1
|
||||
PSIBIN_MICRO_VERSION=0
|
||||
|
||||
#release versioning
|
||||
MUD_MAJOR_VERSION=0
|
||||
MUD_MAJOR_VERSION=1
|
||||
MUD_MINOR_VERSION=0
|
||||
MUD_MICRO_VERSION=0
|
||||
|
||||
@ -69,7 +69,7 @@ PLUGIN_MINOR_VERSION=0
|
||||
PLUGIN_MICRO_VERSION=0
|
||||
|
||||
#release versioning
|
||||
CUBA_MAJOR_VERSION=3
|
||||
CUBA_MAJOR_VERSION=4
|
||||
CUBA_MINOR_VERSION=2
|
||||
CUBA_MICRO_VERSION=0
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/BmwLibs?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:10 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/BmwLibs?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:42:27 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,14 +14,14 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/BmwLibs?t=1494785300" type="application/x-wiki" title="edit BmwLibs" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/BmwLibs?t=1528465298" type="application/x-wiki" title="edit BmwLibs" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -106,10 +106,10 @@
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::COMMENT--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -149,5 +149,5 @@ Topic revision: <span class='patternRevInfo'>03 Jul 2015, suter_a</span></div>
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/BmwLibs?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:10 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/BmwLibs?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:42:27 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/CiteMusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:03 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/CiteMusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:42:20 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,14 +14,14 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/CiteMusrFit?t=1494785299" type="application/x-wiki" title="edit CiteMusrFit" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/CiteMusrFit?t=1528465297" type="application/x-wiki" title="edit CiteMusrFit" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -105,8 +105,8 @@
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
@ -123,13 +123,19 @@
|
||||
<p></p>
|
||||
Since quite some effort is going into the development and maintenance of the <code>musrfit</code> package, you should at least acknowledge it in your publication if you have used it to analyze your data. Even better of course is to cite it properly by the reference given beneath
|
||||
<p></p> <ul>
|
||||
<li> <a href="http://dx.doi.org/10.1016/j.phpro.2012.04.042">A. Suter, B.M. Wojek, "Musrfit: A Free Platform-Independent Framework for μSR Data Analysis", Physics Procedia 30, 69 (2012).</a>
|
||||
<li> <a href="http://dx.doi.org/10.1016/j.phpro.2012.04.042">A. Suter, B.M. Wojek, "Musrfit: A Free Platform-Independent Framework for μSR Data Analysis", Physics Procedia <strong>30</strong>, 69 (2012).</a>
|
||||
</li></ul>
|
||||
<p></p>
|
||||
The GPU high speed <code>musrfit</code> version is utilizing <code>DKS</code>. In case you are using this version, please also add the following citations
|
||||
<p></p> <ul>
|
||||
<li> <a href="https://doi.org/10.1016/j.cpc.2016.05.013">A. Adelmann, U. Locans, A. Suter, "The Dynamic Kernel Scheduler—Part 1", Computer Physics Communications <strong>207</strong>, 83 (2016).</a>
|
||||
</li> <li> <a href="https://doi.org/10.1016/j.cpc.2017.02.007">U. Locans, <strong><em>et al.</em></strong>, "Real-time computation of parameter fitting and image reconstruction using graphical processing units", Computer Physics Communications <strong>215</strong>, 71 (2017).</a>
|
||||
</li></ul> </div>
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="patternInfo">This topic: MUSR<span class='foswikiSeparator'> > </span><a class="foswikiCurrentWebHomeLink" href="WebHome.html">WebHome</a><span class='foswikiSeparator'> > </span>CiteMusrFit <br />
|
||||
Topic revision: <span class='patternRevInfo'>19 Jun 2012, suter_a</span></div>
|
||||
Topic revision: <span class='patternRevInfo'>22 Aug 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -147,5 +153,5 @@ Topic revision: <span class='patternRevInfo'>19 Jun 2012, suter_a</span></div>
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/CiteMusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:03 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/CiteMusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:42:20 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibFitPofB?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:04 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibFitPofB?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:42:21 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,13 +14,13 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/LibFitPofB?t=1494785299" type="application/x-wiki" title="edit LibFitPofB" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/LibFitPofB?t=1528465298" type="application/x-wiki" title="edit LibFitPofB" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@ -101,17 +101,17 @@
|
||||
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
@ -428,5 +428,5 @@ Topic revision: <span class='patternRevInfo'>03 Jul 2015, suter_a</span></div>
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibFitPofB?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:10 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibFitPofB?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:42:26 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibZFRelaxation?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:26 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibZFRelaxation?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:45 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,14 +14,14 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/LibZFRelaxation?t=1494785294" type="application/x-wiki" title="edit LibZFRelaxation" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/LibZFRelaxation?t=1528465295" type="application/x-wiki" title="edit LibZFRelaxation" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -104,13 +104,13 @@
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
@ -233,5 +233,5 @@ Topic revision: <span class='patternRevInfo'>03 Jul 2015, suter_a</span></div>
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibZFRelaxation?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:30 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibZFRelaxation?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:47 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/Msr2Data?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:03 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/Msr2Data?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:42:20 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,13 +14,11 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/Msr2Data?t=1494785299" type="application/x-wiki" title="edit Msr2Data" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/Msr2Data?t=1528465298" type="application/x-wiki" title="edit Msr2Data" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN-->
|
||||
<style class='head TABLEPLUGIN_default' type="text/css" media="all">
|
||||
<base /><!--[if IE]></base><![endif]--><style class='head TABLEPLUGIN_default' type="text/css" media="all">
|
||||
body .foswikiTable {border-width:1px}
|
||||
body .foswikiTable .tableSortIcon img {padding-left:.3em; vertical-align:text-bottom}
|
||||
body .foswikiTable td {border-style:solid none; vertical-align:top}
|
||||
@ -52,10 +50,12 @@ body .foswikiTable#tableMsr2Data1 th.foswikiSortedCol {background-color:#eeeeee}
|
||||
body .foswikiTable#tableMsr2Data1 tr.foswikiTableRowdataBg0 td {background-color:#ffffff}
|
||||
body .foswikiTable#tableMsr2Data1 tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-color:#f5f5f5}
|
||||
</style><!--TABLEPLUGIN_specific-->
|
||||
<link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -135,18 +135,18 @@ body .foswikiTable#tableMsr2Data1 tr.foswikiTableRowdataBg0 td.foswikiSortedCol
|
||||
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JQUERYPLUGIN::TWISTY-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::TWISTY-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
@ -435,5 +435,5 @@ Topic revision: <span class='patternRevInfo'>28 Apr 2016, <a href="https://intr
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/Msr2Data?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:03 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/Msr2Data?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:42:20 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:39 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:56 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,14 +14,11 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrFit?t=1494785298" type="application/x-wiki" title="edit MusrFit" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrFit?t=1528465297" type="application/x-wiki" title="edit MusrFit" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<style class='head TABLEPLUGIN_default' type="text/css" media="all">
|
||||
<base /><!--[if IE]></base><![endif]--><style class='head TABLEPLUGIN_default' type="text/css" media="all">
|
||||
body .foswikiTable {border-width:1px}
|
||||
body .foswikiTable .tableSortIcon img {padding-left:.3em; vertical-align:text-bottom}
|
||||
body .foswikiTable td {border-style:solid none; vertical-align:top}
|
||||
@ -35,8 +32,11 @@ body .foswikiTable tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-col
|
||||
body .foswikiTable tr.foswikiTableRowdataBg1 td {background-color:#f7f7f6}
|
||||
body .foswikiTable tr.foswikiTableRowdataBg1 td.foswikiSortedCol {background-color:#f0f0ee}
|
||||
</style><!--TABLEPLUGIN_default-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -116,17 +116,17 @@ body .foswikiTable tr.foswikiTableRowdataBg1 td.foswikiSortedCol {background-col
|
||||
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
@ -165,7 +165,9 @@ body .foswikiTable tr.foswikiTableRowdataBg1 td.foswikiSortedCol {background-col
|
||||
</li> <li> <a href="MusrFit.html#A_4.4_The_FUNCTIONS_Block"> 4.4 The FUNCTIONS Block </a>
|
||||
</li> <li> <a href="MusrFit.html#A_4.5_The_GLOBAL_Block"> 4.5 The GLOBAL Block </a>
|
||||
</li> <li> <a href="MusrFit.html#A_4.6_The_RUN_Block"> 4.6 The RUN Block </a>
|
||||
</li> <li> <a href="MusrFit.html#A_4.7_The_COMMANDS_Block"> 4.7 The COMMANDS Block </a>
|
||||
</li> <li> <a href="MusrFit.html#A_4.7_The_COMMANDS_Block"> 4.7 The COMMANDS Block </a> <ul>
|
||||
<li> <a href="MusrFit.html#A_4.7.1_DKS_extensions_of_the_COMMANDS_block_enabling_GPU_and_general_OpenCL_support"> 4.7.1 DKS extensions of the COMMANDS block enabling GPU and general OpenCL support </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFit.html#A_4.8_The_FOURIER_Block"> 4.8 The FOURIER Block </a>
|
||||
</li> <li> <a href="MusrFit.html#A_4.9_The_PLOT_Block"> 4.9 The PLOT Block </a>
|
||||
</li> <li> <a href="MusrFit.html#A_4.10_The_STATISTIC_Block"> 4.10 The STATISTIC Block </a>
|
||||
@ -554,6 +556,8 @@ Notes
|
||||
<h2 id="A_4.3_The_THEORY_Block"> 4.3 The THEORY Block </h2>
|
||||
The THEORY block is used to define the fit function. There is a set of predefined functions available. It is also possible to use externally defined functions. How to use them will be explained afterwards, here only the predefined functions are described.
|
||||
<p></p>
|
||||
Theory functions which show a <img class='smily' src='../pub/Main/SmiliesPluginPSI/no.gif' alt='no' title='no' /> are not yet DKS ready, i.e. cannot be run on the GPU if the <code>musrfit</code> / DKS version is installed.
|
||||
<p></p>
|
||||
<span id="TheoryTable"></span>
|
||||
<table border="1" class="foswikiTable" rules="none">
|
||||
<thead>
|
||||
@ -608,14 +612,14 @@ The THEORY block is used to define the fit function. There is a set of predefine
|
||||
<td class="foswikiTableCol1"> sgktlf </td>
|
||||
<td class="foswikiTableCol2"> <img alt="\nu\,(\mathrm{MHz})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_7188605a647615e4fb92cc89274b22a0.png" />, <img alt="\sigma\,(\mu\text{s}^{-1})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_6b6bbc4add4da0bde8220c54594658f3.png" /> </td>
|
||||
<td class="foswikiTableCol3"> <img alt="G_{\mathrm{G,LF}}(t) \equiv 1-\frac{2\sigma^2}{(2\pi\nu)^2}\left[1-\exp\left(-\frac{1}{2}\sigma^2t^2\right)\cos(2\pi\nu t)\right]+\frac{2\sigma^4}{(2\pi\nu)^3}\int^t_0 \exp\left(-\frac{1}{2}\sigma^2\tau^2\right)\sin(2\pi\nu\tau)\mathrm{d}\tau" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_e9a0c0aa5d84cb4ea67265a3b06b9af5.png" /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote3text"></a><span class="FootNoteTextLink" title=" R. S. Hayano _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.20.850][Phys. Rev. B *20* (1979) 850]] "><a class="foswikiCurrentTopicLink" href="#FootNote3note">(4)</a></span> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote3text"></a><span class="FootNoteTextLink" title=" R. S. Hayano _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.20.850][Phys. Rev. B *20* (1979) 850]] "><a class="foswikiCurrentTopicLink" href="#FootNote3note">(4)</a></span> <img class='smily' src='../pub/Main/SmiliesPluginPSI/no.gif' alt='no' title='no' /> </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableOdd foswikiTableRowdataBgSorted1 foswikiTableRowdataBg1">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> dynGssKTLF </td>
|
||||
<td class="foswikiTableCol1"> dgktlf </td>
|
||||
<td class="foswikiTableCol2"> <img alt="\nu\,(\mathrm{MHz})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_7188605a647615e4fb92cc89274b22a0.png" />, <img alt="\sigma\,(\mu\text{s}^{-1})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_6b6bbc4add4da0bde8220c54594658f3.png" />, <img alt="\Gamma\,(\mathrm{MHz})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_f87b1352f663a35bf263bc7e9a214ca3.png" /> </td>
|
||||
<td class="foswikiTableCol3"> <img alt="\frac{1}{2\pi \imath}\int_{\gamma-\imath\infty}^{\gamma+\imath\infty} \frac{f_{\mathrm{G}}(s+\Gamma)}{1-\Gamma f_{\mathrm{G}}(s+\Gamma)} \exp(s t) \mathrm{d}s,\mathrm{where}\,f_{\mathrm{G}}(s)\equiv \int_0^{\infty}G_{\mathrm{G,LF}}(t)\exp(-s t) \mathrm{d}t" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_cb688f85a062f09bfaff5cf9144860a9.png" /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote4text"></a><span class="FootNoteTextLink" title=" R. S. Hayano _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.20.850][Phys. Rev. B *20* (1979) 850]]; P. Dalmas de R&eacute;otier and A. Yaouanc, [[http://dx.doi.org/10.1088/0953-8984/4/18/020][J. Phys.: Condens. Matter *4* (1992) 4533]]; A. Keren, [[http://link.aps.org/doi/10.1103/PhysRevB.50.10039][Phys. Rev. B *50* (1994) 10039]] "><a class="foswikiCurrentTopicLink" href="#FootNote4note">(5)</a></span> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote4text"></a><span class="FootNoteTextLink" title=" R. S. Hayano _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.20.850][Phys. Rev. B *20* (1979) 850]]; P. Dalmas de R&eacute;otier and A. Yaouanc, [[http://dx.doi.org/10.1088/0953-8984/4/18/020][J. Phys.: Condens. Matter *4* (1992) 4533]]; A. Keren, [[http://link.aps.org/doi/10.1103/PhysRevB.50.10039][Phys. Rev. B *50* (1994) 10039]] "><a class="foswikiCurrentTopicLink" href="#FootNote4note">(5)</a></span> <img class='smily' src='../pub/Main/SmiliesPluginPSI/no.gif' alt='no' title='no' /> </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableEven foswikiTableRowdataBgSorted0 foswikiTableRowdataBg0">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> statExpKT </td>
|
||||
@ -629,14 +633,14 @@ The THEORY block is used to define the fit function. There is a set of predefine
|
||||
<td class="foswikiTableCol1"> sektlf </td>
|
||||
<td class="foswikiTableCol2"> <img alt="\nu\,(\mathrm{MHz})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_7188605a647615e4fb92cc89274b22a0.png" />, <img alt="a\,(\mu\text{s}^{-1})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_26a5ae8799badcc3bcbe1823265a9053.png" /> </td>
|
||||
<td class="foswikiTableCol3"> <img alt="1-\frac{a}{2\pi\nu}j_1(2\pi\nu t)\exp\left(-at\right)-\left(\frac{a}{2\pi\nu}\right)^2 \left[j_0(2\pi\nu t)\exp\left(-at\right)-1\right]-a\left[1+\left(\frac{a}{2\pi\nu}\right)^2\right]\int^t_0 \exp\left(-a\tau\right)j_0(2\pi\nu\tau)\mathrm{d}\tau \equiv G_{\mathrm{L,LF}}(t)" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_df4770dd7b14577f14410b4f7ab59721.png" /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote6text"></a><span class="FootNoteTextLink" title=" Y. J. Uemura _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.31.546][Phys. Rev. B *31* (1985) 546]] "><a class="foswikiCurrentTopicLink" href="#FootNote6note">(7)</a></span> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote6text"></a><span class="FootNoteTextLink" title=" Y. J. Uemura _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.31.546][Phys. Rev. B *31* (1985) 546]] "><a class="foswikiCurrentTopicLink" href="#FootNote6note">(7)</a></span> <img class='smily' src='../pub/Main/SmiliesPluginPSI/no.gif' alt='no' title='no' /> </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableEven foswikiTableRowdataBgSorted0 foswikiTableRowdataBg0">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> dynExpKTLF </td>
|
||||
<td class="foswikiTableCol1"> dektlf </td>
|
||||
<td class="foswikiTableCol2"> <img alt="\nu\,(\mathrm{MHz})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_7188605a647615e4fb92cc89274b22a0.png" />, <img alt="a\,(\mu\text{s}^{-1})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_26a5ae8799badcc3bcbe1823265a9053.png" />, <img alt="\Gamma\,(\mathrm{MHz})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_f87b1352f663a35bf263bc7e9a214ca3.png" /> </td>
|
||||
<td class="foswikiTableCol3"> <img alt="\frac{1}{2\pi \imath}\int_{\gamma-\imath\infty}^{\gamma+\imath\infty} \frac{f_{\mathrm{L}}(s+\Gamma)}{1-\Gamma f_{\mathrm{L}}(s+\Gamma)} \exp(s t) \mathrm{d}s,\mathrm{where}\,f_{\mathrm{L}}(s)\equiv \int_0^{\infty}G_{\mathrm{L,LF}}(t)\exp(-s t) \mathrm{d}t" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_c5c6dea10611dae1d470a5615869073a.png" /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote7text"></a><span class="FootNoteTextLink" title=" R. S. Hayano _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.20.850][Phys. Rev. B *20* (1979) 850]]; P. Dalmas de R&eacute;otier and A. Yaouanc, [[http://dx.doi.org/10.1088/0953-8984/4/18/020][J. Phys.: Condens. Matter *4* (1992) 4533]] "><a class="foswikiCurrentTopicLink" href="#FootNote7note">(8)</a></span> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote7text"></a><span class="FootNoteTextLink" title=" R. S. Hayano _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.20.850][Phys. Rev. B *20* (1979) 850]]; P. Dalmas de R&eacute;otier and A. Yaouanc, [[http://dx.doi.org/10.1088/0953-8984/4/18/020][J. Phys.: Condens. Matter *4* (1992) 4533]] "><a class="foswikiCurrentTopicLink" href="#FootNote7note">(8)</a></span> <img class='smily' src='../pub/Main/SmiliesPluginPSI/no.gif' alt='no' title='no' /> </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableOdd foswikiTableRowdataBgSorted1 foswikiTableRowdataBg1">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> combiLGKT </td>
|
||||
@ -706,7 +710,7 @@ The THEORY block is used to define the fit function. There is a set of predefine
|
||||
<td class="foswikiTableCol1"> skg </td>
|
||||
<td class="foswikiTableCol2"> <img alt="\varphi\,(^{\circ})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_61136f20673ad20f955c43e43b8cec9d.png" />, <img alt="\nu\,(\mathrm{MHz})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_7188605a647615e4fb92cc89274b22a0.png" />, <img alt="\sigma_{-}\,(\mu\text{s}^{-1})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_bd5c765027d46aa1433dda03f540c17e.png" />, <img alt="\sigma_{+}\,(\mu\text{s}^{-1})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_82adbab00b6a057f04037b44746e33eb.png" /> </td>
|
||||
<td class="foswikiTableCol3"> <img alt="\frac{\sigma_{-}}{\sigma_{+}+\sigma_{-}}\exp\left[-\frac{\sigma_{-}^2t^2}{2}\right]\left\lbrace\cos\left(2\pi\nu t+\frac{\pi\varphi}{180}\right)+\sin\left(2\pi\nu t+\frac{\pi\varphi}{180}\right)\mathrm{Erfi}\left(\frac{\sigma_{-}t}{\sqrt{2}}\right)\right\rbrace+ \frac{\sigma_{+}}{\sigma_{+}+\sigma_{-}}\exp\left[-\frac{\sigma_{+}^2t^2}{2}\right]\left\lbrace\cos\left(2\pi\nu t+\frac{\pi\varphi}{180}\right)-\sin\left(2\pi\nu t+\frac{\pi\varphi}{180}\right)\mathrm{Erfi}\left(\frac{\sigma_{+}t}{\sqrt{2}}\right)\right\rbrace" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_7f4cd42199fbf712ad5a86f9d94bd698.png" /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a href="http://lmu.web.psi.ch/musrfit/memos/skewedGaussian.pdf">memo</a> <span class='foswikiIcon'><img src='../pub/System/DocumentGraphics/pdf.png' width='16' height='16' alt='pdf' /></span> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a href="http://lmu.web.psi.ch/musrfit/memos/skewedGaussian.pdf">memo</a> <span class='foswikiIcon'><img src='../pub/System/DocumentGraphics/pdf.png' width='16' height='16' alt='pdf' /></span> <img class='smily' src='../pub/Main/SmiliesPluginPSI/no.gif' alt='no' title='no' /> </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableOdd foswikiTableRowdataBgSorted1 foswikiTableRowdataBg1">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> staticNKZF </td>
|
||||
@ -1243,6 +1247,41 @@ For debug purposes it is possible to force MINUIT2 to print out additional infor
|
||||
</pre>
|
||||
Here the <code>MINOS</code> command will print out lot of additional information to the standard output. Notice there are 2 <code>SAVE</code> commands here. This will write the result of <code>MIGRAD</code> to the <code>MINUIT2.OUTPUT</code> file and at the end <em>append</em> the <code>MINOS</code> results to this file.
|
||||
<p></p>
|
||||
<h3 id="A_4.7.1_DKS_extensions_of_the_COMMANDS_block_enabling_GPU_and_general_OpenCL_support"> 4.7.1 DKS extensions of the COMMANDS block enabling GPU and general OpenCL support </h3>
|
||||
<p></p>
|
||||
In case you are running the <code>musrfit</code> / DKS version, there are a couple commands which allow you to control the way how the fit shall be performed. These commands are:
|
||||
<span class='foswikiMaroonFG'>
|
||||
<table border="1" class="foswikiTable" rules="none">
|
||||
<thead>
|
||||
<tr class="foswikiTableOdd foswikiTableRowdataBgSorted0 foswikiTableRowdataBg0">
|
||||
<th class="foswikiTableCol0 foswikiFirstCol"> <a href="https://intranet.psi.ch/MUSR/MusrFit?cover=print;sortcol=0;table=3;up=0#sorted_table" rel="nofollow" title="Sort by this column">Command</a> </th>
|
||||
<th class="foswikiTableCol1 foswikiLastCol"> <a href="https://intranet.psi.ch/MUSR/MusrFit?cover=print;sortcol=1;table=3;up=0#sorted_table" rel="nofollow" title="Sort by this column">Purpose</a> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="foswikiTableEven foswikiTableRowdataBgSorted0 foswikiTableRowdataBg0">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> OpenMP </td>
|
||||
<td class="foswikiTableCol1 foswikiLastCol"> tries to run multi-threading via OpenMP if available </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableOdd foswikiTableRowdataBgSorted1 foswikiTableRowdataBg1">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> CUDA </td>
|
||||
<td class="foswikiTableCol1 foswikiLastCol"> tries to run the fit on a NVIDIA card as the Tesla K40c </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableEven foswikiTableRowdataBgSorted0 foswikiTableRowdataBg0">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> OpenCL-CPU </td>
|
||||
<td class="foswikiTableCol1 foswikiLastCol"> tries to run multi-threading via OpenCL on the CPU. This is useful for macOS </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableOdd foswikiTableRowdataBgSorted1 foswikiTableRowdataBg1">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol foswikiLast"> OpenCL-GPU </td>
|
||||
<td class="foswikiTableCol1 foswikiLastCol foswikiLast"> tries to run multi-threading via OpenCL on the GPU. This is used for AMD cards, but also works for NVIDIA </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<p></p>
|
||||
OpenMP is the default if none of these tags are found in the COMMANDS block.
|
||||
</span>
|
||||
<p></p>
|
||||
In case the defined THEORY is <strong>not</strong> ready to run on the accelerator, <code>musrfit</code> will fall back to the default behaviour. In the <a class="foswikiCurrentTopicLink" href="#TheoryTable">THEORY table</a> all the functions which are currently <strong>not</strong> GPU ready are marked by <img class='smily' src='../pub/Main/SmiliesPluginPSI/no.gif' alt='no' title='no' /> in the reference column.
|
||||
<p></p>
|
||||
<span id="TheFourierBlock"></span>
|
||||
<h2 id="A_4.8_The_FOURIER_Block"> 4.8 The FOURIER Block </h2>
|
||||
The Fourier transform is done and the results are plotted within <code>musrview</code> —as input data the actual data shown in <code>musrview</code> is used. In the FOURIER block of the msr file all necessary parameters for calculating and presenting the Fourier transform of the data specified in the <a class="foswikiCurrentTopicLink" href="#ThePlotBlock">PLOT block</a> is given. If the FOURIER block is not present in the msr file, either the parameters set in the <a class="foswikiCurrentTopicLink" href="#MusrfitStartupXml">XML startup file</a> or the system defaults are taken when the Fourier transform is performed. The block starts with the FOURIER keyword and may contain the following entries on the successive lines: <dl>
|
||||
@ -1713,7 +1752,7 @@ For reporting bugs or requesting new features and improvements please use the <a
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="patternInfo">This topic: MUSR<span class='foswikiSeparator'> > </span><a class="foswikiCurrentWebHomeLink" href="WebHome.html">WebHome</a><span class='foswikiSeparator'> > </span>MusrFit <br />
|
||||
Topic revision: <span class='patternRevInfo'>30 Apr 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
Topic revision: <span class='patternRevInfo'>23 Aug 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -1731,5 +1770,5 @@ Topic revision: <span class='patternRevInfo'>30 Apr 2017, <a href="https://intr
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:03 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:42:20 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitAcknowledgements?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:39 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitAcknowledgements?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:56 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,14 +14,14 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrFitAcknowledgements?t=1494785298" type="application/x-wiki" title="edit MusrFitAcknowledgements" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrFitAcknowledgements?t=1528465297" type="application/x-wiki" title="edit MusrFitAcknowledgements" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -102,14 +102,14 @@
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::COMMENT--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -122,12 +122,15 @@
|
||||
<div class="patternContent"><div class="foswikiTopic"> <h1 id="Acknowledgements_45_61_61musrfit_61_61"> Acknowledgements - <code><b>musrfit</b></code> </h1>
|
||||
<p></p> <dl>
|
||||
<dt> Bastian M. Wojek </dt><dd> I am very much indebted to <a href="http://www.fsf.org/register_form?referrer=8369">BMW</a> for his rigorous testing of <code><a href="MusrFit.html">musrfit</a></code>, his many useful suggestions, contributions, and for the largest part of the <a class="foswikiCurrentWebHomeLink" href="WebHome.html">user manual of <code>musrfit</code></a> which makes it accessible to a broader audience! Many thanks Bastian!
|
||||
</dd></dl>
|
||||
<p></p> <dl>
|
||||
<dt> Uldis Locans </dt><dd> I am very much indebted to Uldis work on <a href="CiteMusrFit.html">DKS</a> enabling the GPU support for <code><a href="MusrFit.html">musrfit</a></code>. His kind, calm, and extremely competent way to deal with his projects as well as to deal with the chaos of physicists way to think is admirable. Many thanks Uldis!
|
||||
</dd></dl> </div>
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="patternInfo">This topic: MUSR<span class='foswikiSeparator'> > </span><a class="foswikiCurrentWebHomeLink" href="WebHome.html">WebHome</a> > <a href="MusrFit.html">MusrFit</a><span class='foswikiSeparator'> > </span>MusrFitAcknowledgements <br />
|
||||
Topic revision: <span class='patternRevInfo'>03 Jul 2015, suter_a</span></div>
|
||||
Topic revision: <span class='patternRevInfo'>23 Aug 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -145,5 +148,5 @@ Topic revision: <span class='patternRevInfo'>03 Jul 2015, suter_a</span></div>
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitAcknowledgements?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:39 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitAcknowledgements?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:56 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitSetup?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:39 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitSetup?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:56 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,7 +14,7 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrFitSetup?t=1494785297" type="application/x-wiki" title="edit MusrFitSetup" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrFitSetup?t=1528465297" type="application/x-wiki" title="edit MusrFitSetup" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
@ -101,17 +101,17 @@
|
||||
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
@ -134,9 +134,13 @@
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.1.2_Installation_of_61_61NeXus_61_61_requirements_40optional_41"> 3.1.2 Installation of NeXus requirements (optional) </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.1.3_61_61ROOT_61_61"> 3.1.3 ROOT </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.2_61_61musrfit_61_61"> 3.2 musrfit </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.2_61_61musrfit_61_61"> 3.2 musrfit </a> <ul>
|
||||
<li> <a href="MusrFitSetup.html#A_3.2.1_61_61musrfit_61_61_build_with_61_61automake_61_61"> 3.2.1 musrfit build with automake </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.2.2_61_61musrfit_61_61_build_with_61_61cmake_61_61"> 3.2.2 musrfit build with cmake </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.2.3_61_61musrfit_61_61_last_step_of_the_installation"> 3.2.3 musrfit last step of the installation </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.3_61_61musredit_61_61"> 3.3 musredit </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.4_61_61musrgui_61_61"> 3.4 musrgui </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.4_61_61musrgui_61_61_40obsolete_41"> 3.4 musrgui (obsolete) </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.5_Check_of_the_installation"> 3.5 Check of the installation </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_4_MS_Windows"> 4 MS Windows </a> <ul>
|
||||
@ -145,24 +149,40 @@
|
||||
</li> <li> <a href="MusrFitSetup.html#A_4.1.2_Installation_of_61_61NeXus_61_61_requirements_40optional_41"> 4.1.2 Installation of NeXus requirements (optional) </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_4.1.3_61_61ROOT_61_61"> 4.1.3 ROOT </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_4.2_61_61musrfit_61_61"> 4.2 musrfit </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_4.2_61_61musrfit_61_61"> 4.2 musrfit </a> <ul>
|
||||
<li> <a href="MusrFitSetup.html#A_4.2.1_61_61musrfit_61_61_build_with_61_61automake_61_61"> 4.2.1 musrfit build with automake </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_4.2.2_61_61musrfit_61_61_build_with_61_61cmake_61_61"> 4.2.2 musrfit build with cmake </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_4.2.3_61_61musrfit_61_61_last_step_of_the_installation"> 4.2.3 musrfit last step of the installation </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_4.3_61_61musredit_61_61"> 4.3 musredit </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_4.4_61_61musrgui_61_61"> 4.4 musrgui </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_4.5_Check_of_the_installation"> 4.5 Check of the installation </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_4.6_Possible_problems"> 4.6 Possible problems </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5_Mac_OS_X"> 5 Mac OS X </a> <ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5_Mac_OS_X_47_macOS"> 5 Mac OS X / macOS </a> <ul>
|
||||
<li> <a href="MusrFitSetup.html#A_5.1_Requirements_40_61_61MacPorts_61_61_41"> 5.1 Requirements (MacPorts) </a> <ul>
|
||||
<li> <a href="MusrFitSetup.html#A_5.1.1_Everything_but_61_61ROOT_61_61_and_61_61NeXus_61_61"> 5.1.1 Everything but ROOT and NeXus </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.1.2_Installation_of_61_61NeXus_61_61_requirements_40optional_41"> 5.1.2 Installation of NeXus requirements (optional) </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.1.3_61_61ROOT_61_61"> 5.1.3 ROOT </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.1.3_61_61ROOT_61_61"> 5.1.3 ROOT </a> <ul>
|
||||
<li> <a href="MusrFitSetup.html#A_5.1.3.1_61_61ROOT_61_61_installed_via_package_installer"> 5.1.3.1 ROOT installed via package installer </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.1.3.2_61_61ROOT_61_61_installed_from_source"> 5.1.3.2 ROOT installed from source </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.1.3.3_Setting_up_Environment_Variables_for_61_61ROOT_61_61_and_61_61musrfit_61_61"> 5.1.3.3 Setting up Environment Variables for ROOT and musrfit </a>
|
||||
</li></ul>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.2_Requirements_40_61_61Fink_61_61_41"> 5.2 Requirements (Fink) </a> <ul>
|
||||
<li> <a href="MusrFitSetup.html#A_5.2.1_Everything_but_61_61ROOT_61_61_and_61_61NeXus_61_61"> 5.2.1 Everything but ROOT and NeXus </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.2.2_Installation_of_61_61NeXus_61_61_requirements_40optional_41"> 5.2.2 Installation of NeXus requirements (optional) </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.2.3_61_61ROOT_61_61"> 5.2.3 ROOT </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.2.3_61_61ROOT_61_61"> 5.2.3 ROOT </a> <ul>
|
||||
<li> <a href="MusrFitSetup.html#A_5.2.3.1_61_61ROOT_61_61_installed_via_package_installer"> 5.2.3.1 ROOT installed via package installer </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.2.3.2_61_61ROOT_61_61_installed_from_source"> 5.2.3.2 ROOT installed from source </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.2.3.3_Setting_up_Environment_Variables_for_61_61ROOT_61_61_and_61_61musrfit_61_61"> 5.2.3.3 Setting up Environment Variables for ROOT and musrfit </a>
|
||||
</li></ul>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.3_61_61musrfit_61_61"> 5.3 musrfit </a> <ul>
|
||||
<li> <a href="MusrFitSetup.html#A_5.3.1_61_61musrfit_61_61_build_with_61_61automake_61_61"> 5.3.1 musrfit build with automake </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.3.2_61_61musrfit_61_61_build_with_61_61cmake_61_61"> 5.3.2 musrfit build with cmake </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.3.3_61_61musrfit_61_61_last_step_of_the_installation"> 5.3.3 musrfit last step of the installation </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.3_61_61musrfit_61_61"> 5.3 musrfit </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.4_61_61musredit_61_61"> 5.4 musredit </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.5_61_61musrgui_61_61_40obsolete_41"> 5.5 musrgui (obsolete) </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.6_Check_of_the_installation"> 5.6 Check of the installation </a>
|
||||
@ -175,22 +195,25 @@
|
||||
This page is intended to demonstrate for the interested user which steps are necessary to set up the <a href="http://www.gnu.org/philosophy/free-sw.html">free software</a> μSR data analysis framework <code><a href="MusrFit.html">musrfit</a></code>. While the preferred way is to run the software on <strong>GNU/Linux</strong> or <strong>MacOS X</strong>, with some restrictions it can also be set up under <strong>MS Windows</strong> (cygwin, only for the very brave, probably it is easier for most MS Windows users to install a Virtual Machine running Linux). <span class='foswikiRedFG'>In case <code>musrfit</code> should be installed according to the description found on this page, the user is strongly encouraged to <em>read completely</em> each section dealing with the present installation step <em>before</em> starting the installation process!</span>
|
||||
<p></p>
|
||||
<span id="ReqSw"></span>
|
||||
Apart from <a href="http://gcc.gnu.org/">GCC, the GNU Compiler Collection</a> (gcc, g++), the GNU build tools <a href="http://www.gnu.org/software/autoconf/">autoconf</a>, <a href="http://www.gnu.org/software/automake/">automake</a> and <a href="http://www.gnu.org/software/libtool/">libtool</a> as well as the helper tool <a href="http://pkg-config.freedesktop.org/wiki/">pkg-config</a> <code>musrfit</code> requires the installation of a few open-source libraries and programs including their header packages:
|
||||
$ <a href="http://www.boost.org/">boost C++ libraries</a>: The powerful <code>Spirit</code> parser framework used by <code>musrfit</code> is included in that collection of libraries. <em>Required version ≥ 1.33</em>
|
||||
$ <a href="http://www.gnu.org/software/gsl/">GNU Scientific Library</a>: A numerical <code>C</code> and <code>C++</code> library which provides efficient implementations of various mathematical routines. <em>Required version ≥ 1.9</em>
|
||||
$ <a href="http://www.fftw.org/">FFTW</a>: A <code>C</code> implementation for the fast computation of discrete Fourier transforms. <em>Required version ≥ 3.1</em>
|
||||
$ <a href="http://root.cern.ch/">ROOT</a>: A <code>C++</code> data analysis framework developed at <a href="http://www.cern.ch/">CERN</a>. <em>Required version ≥ 5.22</em>
|
||||
$ <a href="http://xmlsoft.org/">libxml2</a>: The <code>XML</code> <code>C</code> parser and toolkit of <a href="http://www.gnome.org/">Gnome</a>. <em>Required version ≥ 2.0</em>
|
||||
Apart from <a href="http://gcc.gnu.org/">GCC, the GNU Compiler Collection</a> (gcc, g++), the GNU build tools <a href="http://www.gnu.org/software/autoconf/">autoconf</a>, <a href="http://www.gnu.org/software/automake/">automake</a> and <a href="http://www.gnu.org/software/libtool/">libtool</a> are needed if you want to build <code>musrfit</code> via the automake toolchain, or <a href="https://cmake.org/">cmake</a> if you plan to use the cmake toolchain. Furthermore the helper tool <a href="http://pkg-config.freedesktop.org/wiki/">pkg-config</a> is needed and <code>musrfit</code> requires the installation of a few open-source libraries and programs including their header packages:
|
||||
<p></p> <dl>
|
||||
<dt> boost C++ libraries </dt><dd> The powerful <code>Spirit</code> parser framework used by <code>musrfit</code> is included in that collection of libraries. <em>Required version ≥ 1.33</em> (see <a href="http://www.boost.org/">boost C++ libraries</a>)
|
||||
</dd> <dt> GNU Scientific Library </dt><dd> A numerical <code>C</code> and <code>C++</code> library which provides efficient implementations of various mathematical routines. <em>Required version ≥ 1.9</em> (see <a href="http://www.gnu.org/software/gsl/">GNU Scientific Library</a>)
|
||||
</dd> <dt> FFTW </dt><dd> A <code>C</code> implementation for the fast computation of discrete Fourier transforms. <em>Required version ≥ 3.1</em> $ <a href="http://root.cern.ch/">ROOT</a>: A <code>C++</code> data analysis framework developed at <a href="http://www.cern.ch/">CERN</a>. <em>Required version ≥ 5.22</em> (see <a href="http://www.fftw.org/">FFTW</a>)
|
||||
</dd> <dt> libxml2 </dt><dd> The <code>XML</code> <code>C</code> parser and toolkit of <a href="http://www.gnome.org/">Gnome</a>. <em>Required version ≥ 2.0</em> (see <a href="http://xmlsoft.org/">libxml2</a>)
|
||||
</dd></dl>
|
||||
<p></p>
|
||||
<span id="ReqSwNeXus"></span>
|
||||
Additionally, <span class='foswikiRedFG'>only if</span> <code>musrfit</code> should support reading of data files in the <code>NeXus</code> format the following libraries are needed:
|
||||
$ <a href="http://www.hdfgroup.org/products/hdf4/">HDF4</a>: A library and multi-object file format for storing and managing data.
|
||||
$ <a href="http://www.hdfgroup.org/HDF5/">HDF5</a>: A data model, library, and file format for storing and managing data.
|
||||
$ <a href="http://www.minixml.org/">minixml</a>: A small <code>XML</code> library that can be used to read and write <code>XML</code> and <code>XML</code> -like data files. <em>Required version ≥ 2.2</em>
|
||||
$ <a href="http://www.nexusformat.org/">NeXus</a>: A common data format for neutron, x-ray, and muon science. <em>Required version ≥ 4.4</em>
|
||||
Additionally, <span class='foswikiRedFG'>only if</span> <code>musrfit</code> should support reading of data files in the <code>NeXus</code> format the following libraries are needed: <dl>
|
||||
<dt> HDF4 </dt><dd> A library and multi-object file format for storing and managing data (see <a href="http://www.hdfgroup.org/products/hdf4/">HDF4</a>). HDF4 is "outdated" and its support will soon be dropped.
|
||||
</dd> <dt> HDF5 </dt><dd> A data model, library, and file format for storing and managing data (see <a href="http://www.hdfgroup.org/HDF5/">HDF5</a>).
|
||||
</dd> <dt> minixml </dt><dd> A small <code>XML</code> library that can be used to read and write <code>XML</code> and <code>XML</code> -like data files. <em>Required version ≥ 2.2</em> (see <a href="http://www.minixml.org/">minixml</a>).
|
||||
</dd> <dt> NeXus </dt><dd> A common data format for neutron, x-ray, and muon science. <em>Required version ≥ 4.4</em> (see <a href="http://www.nexusformat.org/">NeXus</a>).
|
||||
</dd></dl>
|
||||
<p></p>
|
||||
If optionally the editor and graphical user interface <code><a href="MusrGui.html">musrgui</a></code> / <code><a href="MusrGui.html">musredit</a></code> is going to be installed there is one further requirement:
|
||||
$ <a href="http://qt.nokia.com/">Qt</a>: A cross-platform application and user interface framework. <em>Required version ≥ 3.3 & ≪ 4.0 (<code>musrgui</code>) <strong>OR</strong> ≥ 4.6 (<code>musredit</code>)</em>
|
||||
If optionally the editor and graphical user interface <code><a href="MusrGui.html">musrgui</a></code> / <code><a href="MusrGui.html">musredit</a></code> is going to be installed there is one further requirement: <dl>
|
||||
<dt> Qt </dt><dd> A cross-platform application and user interface framework. ≥ 4.6 (<code>musredit</code>) (see <a href="http://qt.io/">Qt</a>).
|
||||
</dd></dl>
|
||||
<p></p>
|
||||
Each of the following sections focusing on the installation of <code>musrfit</code> on the different operating systems will also give a brief introduction on the installation of the requirements before the actual <code>musrfit</code> installation is described.
|
||||
<p></p>
|
||||
@ -224,28 +247,27 @@ When dealing with a distribution that uses the dpkg/apt package manager like <a
|
||||
<p></p>
|
||||
For <strong>Qt4</strong>:
|
||||
<pre class="bash">
|
||||
$ apt-get install git cmake libboost-dev libgsl0-dev libfftw3-dev libxml2-dev libqt4-dev libqtwebkit-dev
|
||||
$ apt-get install git cmake libboost-dev libgsl-dev libfftw3-dev libxml2-dev libqt4-dev libqtwebkit-dev
|
||||
</pre>
|
||||
<p></p>
|
||||
For <strong>Qt5</strong>:
|
||||
<pre class="bash">
|
||||
$ apt-get install git cmake libboost-dev libgsl0-dev libfftw3-dev libxml2-dev qt5-default qtbase5-dev libqt5svg5-dev libqt5webkit5-dev
|
||||
$ apt-get install git cmake libboost-dev libgsl-dev libfftw3-dev libxml2-dev qt5-default qtbase5-dev libqt5svg5-dev libqt5webkit5-dev
|
||||
</pre>
|
||||
<p></p>
|
||||
Everyone should know best himself which is the way to install distribution software on the chosen distribution <img class='smily' src='../pub/Main/SmiliesPluginPSI/wink.gif' alt='wink' title='wink' />
|
||||
<p></p>
|
||||
In case the distribution does not include the required software it has to be compiled from the source files which normally means to download the source code from the corresponding website, to unpack the source tree and call the following from the shell:
|
||||
<pre class="bash">
|
||||
$ ./configure
|
||||
$ make
|
||||
$ make install
|
||||
</pre>
|
||||
In order to obtain some information about the possible options for the installation, calling <code>./configure --help</code> might give some useful hints. <br>
|
||||
In case the distribution does not include the required software it has to be compiled from the source files.
|
||||
This means either to download the source code from the corresponding website, or to clone the git repo. If you
|
||||
need to follow this line, please check the install details of the corresponding package.
|
||||
<p></p>
|
||||
For any further information on the standard installation of software, please refer to the web search engine of choice and ask for "install software on linux"...
|
||||
<p></p>
|
||||
<h3 id="A_3.1.2_Installation_of_61_61NeXus_61_61_requirements_40optional_41"> 3.1.2 Installation of <code><b>NeXus</b></code> requirements (optional) </h3>
|
||||
<span class='foswikiRedFG'>Only if</span> <code>musrfit</code> should support reading/writing data files in the <code>NeXus</code> format the further <a class="foswikiCurrentTopicLink" href="#ReqSwNeXus">required</a> software has to be set up. The required libraries and header files could either be available through the user's GNU/Linux distribution or if this is not the case, the packages can be installed from the source code. E.g. on Red Hat-like systems binary packages for <code>MXML</code>, <code>HDF4</code>, and <code>HDF5</code> might be called <code><b>mxml, mxml-devel, hdf, hdf-devel, hdf5, hdf5-devel</b></code>, on Debian-like systems <code><b>libmxml1, libmxml-dev, libhdf4-dev, libhdf5-dev</b></code>.
|
||||
<p></p>
|
||||
<strong>Note:</strong> <strong>HDF4</strong> support within <code>NeXus</code> will be dropped by <code>musrfit</code> in the near future. If you not urgently need to read old <code>ISIS</code> <code>NeXus</code> files, you safely can drop it.
|
||||
<p></p>
|
||||
<strong>Only <code><b>NeXus</b></code> Version >= 4.4 is support!</strong>
|
||||
<p></p>
|
||||
Even though there might exist binary packages for the <code>NeXus</code> library, it is best to build and install it directly from the source code which can be found <a href="https://github.com/nexusformat/code">here</a>.
|
||||
@ -262,8 +284,11 @@ A brief instruction how to get <code>NeXus</code> compiled from source:
|
||||
$ # next we will build NeXus out-of-source
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
# The next line only if HDF4 support is needed
|
||||
$ cmake -DENABLE_HDF5=1 -DENABLE_HDF4=1 -DENABLE_MXML=1 ../code
|
||||
$ make
|
||||
# The next line if HDF4 support is NOT needed
|
||||
$ cmake -DENABLE_HDF5=1 -DENABLE_MXML=1 ../code
|
||||
$ cmake --build ./ --clean-first
|
||||
$ # make install needs either to be carried out as root or sudo depending on your linux flavour.
|
||||
$ sudo make install
|
||||
</pre>
|
||||
@ -277,9 +302,9 @@ For RPM based systems (RedHat, Fedora, etc) this will likely to be <strong>libX1
|
||||
$ yum install libX11-devel libXft-devel libXpm-devel libXext-devel
|
||||
</pre>
|
||||
<p></p>
|
||||
For a dpkg/apt based system (Debian, Ubuntu, etc) this will likely to be <strong>libX11-dev</strong>, <strong>libxft-dev</strong>, <strong>libxpm-dev</strong>, and <strong>libxext-dev</strong>:
|
||||
For a dpkg/apt based system (Debian, Ubuntu, etc) this will likely to be <strong>libx11-dev</strong>, <strong>libxft-dev</strong>, <strong>libxpm-dev</strong>, and <strong>libxext-dev</strong>:
|
||||
<pre class="bash">
|
||||
$ apt-get install libX11-dev libxft-dev libxpm-dev libxext-dev
|
||||
$ apt-get install libx11-dev libxft-dev libxpm-dev libxext-dev
|
||||
</pre>
|
||||
<p></p>
|
||||
Also make sure that you have installed all required packages listed under <a class="foswikiCurrentTopicLink" href="#ReqSw">Required Software</a> (e.g. fftw, gsl, etc).
|
||||
@ -300,10 +325,10 @@ For the following it is assumed that <code>ROOT</code> shall be installed under
|
||||
$ mkdir root_build
|
||||
$ cd root_build
|
||||
$ cmake ../ -Dgminimal=ON -Dasimage=ON -Dmathmore=On -Dminuit2=ON -Dxml=ON -DCMAKE_INSTALL_PREFIX=../root_exec
|
||||
$ # next will be the make. If running on a multicore CPU you can speed up tremendously by calling
|
||||
$ # make with the option -j <number>, where <number> is the number of threads which you want to give,
|
||||
$ # e.g. make -j8
|
||||
$ make
|
||||
$ # next will be the make called via cmake. If running on a multicore CPU you can speed up tremendously by calling
|
||||
$ # it with the option -j <number>, where <number> is the number of threads which you want to give,
|
||||
$ # e.g. cmake --build ./ --clean-first -- -j8
|
||||
$ cmake --build ./ --clean-first
|
||||
$ # as a last step of the ROOT build process we need to install it
|
||||
$ make install
|
||||
</pre>
|
||||
@ -323,7 +348,7 @@ If an update of <code>ROOT</code> is needed, simple do the following:<pre class=
|
||||
$ cd $HOME/Apps/root
|
||||
$ git pull
|
||||
$ cd root_build
|
||||
$ make
|
||||
$ cmake --build ./ --clean-first
|
||||
</pre>
|
||||
<p></p>
|
||||
<span id="MusrFitInstallation"></span>
|
||||
@ -346,23 +371,42 @@ or
|
||||
<strong>Note 1:</strong> <code>musrfit</code> has moved from svn to git. In case you still have an <em>old</em> svn version of musrfit, it is advised to remove it first. For svn users: for a smooth transition from svn to git, please check the following link:
|
||||
<a href="http://www.git-tower.com/blog/git-for-subversion-users-cheat-sheet/">Git for Subversion Users - A Cheat Sheet</a>.
|
||||
<p></p>
|
||||
<strong>Note 2:</strong> after cloning the <code>musrfit</code> repo you will automatically be on the root6 branch. If you want to get legacy ROOT 5.34.xx support, you will needed to switch branches first.
|
||||
<strong>Note 2:</strong> after cloning the <code>musrfit</code> repo you will automatically be on the <strong>root6</strong> branch. If you want to get legacy ROOT 5.34.xx support, you will needed to switch branches first.
|
||||
<p></p>
|
||||
<strong>Update:</strong>
|
||||
If a local repository clone is already present (it needs to be newer than Dec. 2016), one can update it using:
|
||||
<pre class="bash">
|
||||
$ cd $HOME/Apps/musrfit
|
||||
$ git pull
|
||||
$ # the new version now needs to be compiled and installed
|
||||
</pre>
|
||||
Now, depending whether you follow the automake or cmake tool chain you do
|
||||
<p></p>
|
||||
<strong>automake toolchain</strong>:
|
||||
<pre class="bash">
|
||||
$ make uninstall
|
||||
$ make clean
|
||||
$ make
|
||||
$ make install
|
||||
</pre>
|
||||
<p></p>
|
||||
or
|
||||
<p></p>
|
||||
<strong>cmake toolchain</strong>:
|
||||
<pre class="bash">
|
||||
$ cd build
|
||||
$ xargs rm < install_manifest.txt
|
||||
$ cmake --build ./ --clean-first
|
||||
$ make install
|
||||
</pre>
|
||||
<p></p>
|
||||
<span class='foswikiRedFG'>As an alternative (if git is not available)</span>, the source code can also be downloaded from the following web-page: <a href="https://bitbucket.org/muonspin/musrfit/downloads">musrfit at bitbucket</a>.
|
||||
<p></p>
|
||||
<h3 id="A_3.2.1_61_61musrfit_61_61_build_with_61_61automake_61_61"> 3.2.1 <code><b>musrfit</b></code> build with <code><b>automake</b></code> </h3>
|
||||
<p></p>
|
||||
After the source-code extraction the <strong>autogen.sh</strong> script is called to prepare the build environment. If it has been executed successfully the <strong>configure</strong> script should be ready to collect all the information needed to create the Makefiles. <span class='foswikiRedFG'>If <code>musrfit</code> should support <code>NeXus</code> data files this has to be enabled by specifying the <strong>--enable-NeXus</strong> switch when calling <strong>configure</strong>.</span> For an overview of all available options just call <code>./configure --help</code>. Besides the standard options there are a few special options which should be mentioned here:
|
||||
<p></p> <dl>
|
||||
<dt> --prefix </dt><dd> Specify the installation prefix, e.g. /opt/root-system (<em>by default: /usr/local</em>)
|
||||
</dd> <dt> --with-rootsys </dt><dd> Specify the top of the <code>ROOT</code> installation directory, e.g. /opt/root-system
|
||||
<dt> --prefix </dt><dd> Specify the installation prefix, e.g. $ROOTSYS if already defined (<em>by default: /usr/local</em>)
|
||||
</dd> <dt> --with-rootsys </dt><dd> Specify the top of the <code>ROOT</code> installation directory, e.g. $ROOTSYS if already defined
|
||||
</dd> <dt> --with-fftw3 </dt><dd> Specify the prefix of the <code>FFTW3</code> installation. e.g. /usr/local or /usr
|
||||
</dd> <dt> --with-gsl </dt><dd> Set the prefix of the <code>GSL</code> installation, e.g. /usr/local or /usr
|
||||
</dd> <dt> --with-boostinc </dt><dd> Set the path to the header files of the <code>Boost</code> installation, e.g. /usr/local/include or /usr/include
|
||||
@ -387,19 +431,50 @@ When the <strong>configure</strong> script has been called successfully everythi
|
||||
$ make install
|
||||
$ /sbin/ldconfig # (as superuser)
|
||||
</pre>
|
||||
<p></p>
|
||||
<h3 id="A_3.2.2_61_61musrfit_61_61_build_with_61_61cmake_61_61"> 3.2.2 <code><b>musrfit</b></code> build with <code><b>cmake</b></code> </h3>
|
||||
<p></p>
|
||||
Currently the following configuration switches for <code>musrfit</code> are available:
|
||||
<p></p> <dl>
|
||||
<dt> -DCMAKE_INSTALL_PREFIX=<prefix-path> </dt><dd> Specify the installation prefix, i.e. the place where <code>musrfit</code> shall be installed, e.g. $ROOTSYS if already defined (<em>by default: /usr/local</em>)
|
||||
</dd> <dt> -Dnexus=<value> </dt><dd> enable/disable the support of <code>NeXus</code> data files (<em>requires the <code>HDF4</code>, <code>HDF5</code> and <code>NeXus</code> libraries to be installed</em>). <value>=1 enables <code>NeXus</code>, <value>=0 disables <code>NeXus</code>. The default setting, i.e. the switch is <strong>not</strong> provided is <code>NeXus</code> support is <strong>disabled</strong>.
|
||||
</dd> <dt> -DASlibs=<value> </dt><dd> enable/disable the <code>ASlibs</code>. <value>=1 enables the <code>ASlibs</code>, <value>=0 disables the <code>ASlibs</code>. The default setting, i.e. the switch is <strong>not</strong> provided is <code>ASlibs</code> support is <strong>disabled</strong>. For details see <a href="index.html">Documentation of user libs</a>.
|
||||
</dd> <dt> -DBMWlibs=<value> </dt><dd> enable/disable the <code>BMWlibs</code>. <value>=1 enables the <code>BMWlibs</code>, <value>=0 disables the <code>BMWlibs</code>. The default setting, i.e. the switch is <strong>not</strong> provided is <code>BMWlibs</code> support is <strong>disabled</strong>. For details see <a href="index.html">Documentation of user libs</a>.
|
||||
</dd> <dt> -DBNMRlibs=<value> </dt><dd> enable/disable the <code>BNMRlibs</code>. <value>=1 enables the <code>BNMRlibs</code>, <value>=0 disables the <code>BNMRlibs</code>. The default setting, i.e. the switch is <strong>not</strong> provided is <code>BNMRlibs</code> support is <strong>disabled</strong>.
|
||||
</dd> <dt> -Dqt_based_tools=<value> </dt><dd> Will try to get musredit, musrWiz, musrStep, and mupp installed, if <code>Qt</code> is found. By default this is <strong>enabled</strong>. Again <value>=0 means disabled, <value>=1 enabled.
|
||||
</dd> <dt> -Dqt_version=<value> </dt><dd> Allows to specify which <code>Qt</code> version shall be tried. <value> can take the values: <code>AUTO</code>, 3, 4, 5. If the value is set to <code>AUTO</code>, this highest installed version is chosen, otherwise the specified version is used.
|
||||
</dd> <dt> -Dtry_OpenMP=<value> </dt><dd> Will check if <code>OpenMP</code> support is possible, and if yes use it. The default is <strong>enabled</strong>
|
||||
</dd></dl>
|
||||
<p></p>
|
||||
Normally it should not be necessary to make use of any of the options except for specifying the installation path with <strong>-DCMAKE_INSTALL_PREFIX</strong>. <code>musrfit</code> build with <code>cmake</code> takes the out-of-source approach. Therefore a typical configuration / make / install process including <code>NeXus</code> support would look like
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ cd $HOME/Apps/musrfit
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
$ cmake ../ -DCMAKE_INSTALL_PREFIX=$ROOTSYS -Dnexus=1
|
||||
# below it is assumed that multiple cores are present, hence the -j8 option
|
||||
$ cmake --build ./ --clean-first -- -j8
|
||||
$ make install
|
||||
$ /sbin/ldconfig # (as superuser)
|
||||
</pre>
|
||||
<p></p>
|
||||
<h3 id="A_3.2.3_61_61musrfit_61_61_last_step_of_the_installation"> 3.2.3 <code><b>musrfit</b></code> last step of the installation </h3>
|
||||
<p></p>
|
||||
In order to finish the installation of <code>musrfit</code> two more things should be done: <ul>
|
||||
<li> Define the <strong>MUSRFITPATH</strong> environment variable containing the path to the <code>musrfit</code> executables and XML files. E.g. if the location of the example above is used append the following line to the <strong>~/.bashrc</strong> and <strong>~/.bash_profile</strong> (and then either restart the shell or call the same commands once more from the shell): <pre class="bash">
|
||||
export MUSRFITPATH=/opt/root-system/bin
|
||||
export MUSRFITPATH=$ROOTSYS/bin
|
||||
</pre>
|
||||
</li> <li> Adjust the paths where <code>musrfit</code> will search for data files in the installed <strong>musrfit_startup.xml</strong>. For detailed information on this XML file refer to the <a href="MusrFit.html#MusrfitStartupXml">manual</a>.
|
||||
</li></ul>
|
||||
<p></p>
|
||||
<span id="MusrGuiInstallLinux"></span>
|
||||
<h2 id="A_3.3_61_61musredit_61_61"> 3.3 <code><b>musredit</b></code> </h2>
|
||||
<span class='foswikiBlueFG'>In the latest version of <code>musrfit</code> the configure script tries to determine automatically if <code>Qt4.6</code> or higher is set up on the machine. In case this is found, the editor <code>musredit</code> is built already together with <code>musrfit</code>. <em>If not</em>, one can either try to call the configure script with the "--with-qt4" option or install this editor separately:</span>
|
||||
<p></p>
|
||||
<span class='foswikiBlueFG'>In the latest version of <code>musrfit</code> the configure script tries to determine automatically the highest available Qt version. In case this is found, the editor <code>musredit</code> is built already together with <code>musrfit</code>. <em>If not</em>, one can either try to call the configure script with the "--with-qt5" option or install this editor separately:</span>
|
||||
<pre class="bash">
|
||||
$ cd $HOME/Apps/musrfit/src/musredit
|
||||
$ # for some distributions you will need qmake-qt4 for the next command
|
||||
$ cd $HOME/Apps/musrfit/src/musredit_qt5
|
||||
$ # for some distributions you will need qmake-qt5 for the next command
|
||||
$ qmake musredit.pro
|
||||
</pre>
|
||||
If everything went fine <code>musredit</code> can be compiled and installed:
|
||||
@ -410,7 +485,7 @@ If everything went fine <code>musredit</code> can be compiled and installed:
|
||||
In case one does not like the executable <strong>musredit</strong> to be copied to the default installation directory $ROOTSYS/bin the last "make install" can be skipped and the executable can be copied somewhere else instead. However, the <strong>musredit_startup.xml</strong> should go to the installation directory <strong>MUSRFITPATH</strong> of the <code>musrfit</code> executables.
|
||||
Eventually, in the installed <strong>musredit_startup.xml</strong> the path specifications should be adjusted to match the local <code>musrfit</code> installation. For detailed information on this XML file refer to the <a href="MusrGui.html#MusrguiStartupXml">manual</a>.
|
||||
<p></p>
|
||||
<h2 id="A_3.4_61_61musrgui_61_61"> 3.4 <code><b>musrgui</b></code> </h2>
|
||||
<h2 id="A_3.4_61_61musrgui_61_61_40obsolete_41"> 3.4 <code><b>musrgui</b></code> (obsolete) </h2>
|
||||
If <code>Qt4.6</code> or higher is not available but <code>Qt3</code> is set up <code>musrgui</code> can be installed. For this please follow the instructions for the <a class="foswikiCurrentTopicLink" href="#MusrGuiInstallLinux">musredit installation</a> where simply every <code>musredit</code> occurrence has to be replaced by <code>musrgui</code>.<br>
|
||||
If there are problems during the <code>qmake</code> step, e.g. "uic: File generated with too old version of Qt Designer", this most probably means the <code>Qt4</code> version of qmake is being used. In order to use the <code>Qt3</code> version it should be enough to specify the full path to its location when calling it. Within the most GNU/Linux distributions this location will be something like /usr/lib/qt-3.3/bin/qmake.
|
||||
<p></p>
|
||||
@ -550,6 +625,8 @@ If the repository had been checked out already before, one can update the local
|
||||
<p></p>
|
||||
<span class='foswikiRedFG'>As an alternative (if git is not available)</span>, the source code can also be downloaded from the following web-page: <a href="https://bitbucket.org/muonspin/musrfit/downloads">musrfit at bitbucket</a>.
|
||||
<p></p>
|
||||
<h3 id="A_4.2.1_61_61musrfit_61_61_build_with_61_61automake_61_61"> 4.2.1 <code><b>musrfit</b></code> build with <code><b>automake</b></code> </h3>
|
||||
<p></p>
|
||||
After the source-code extraction the <strong>autogen.sh</strong> script is called to prepare the build environment. If it has been executed successfully the <strong>configure</strong> script should be ready to collect all the information needed to create the Makefiles. <span class='foswikiRedFG'>If <code>musrfit</code> should support <code>NeXus</code> data files this has to be enabled by specifying the <nobr><b>--enable-static</b></nobr> <nobr><b>--enable-NeXus</b></nobr> switches when calling <strong>configure</strong>.</span> For an overview of all available options just call <code>./configure --help</code>. Besides the standard options there are a few special options which should be mentioned here:
|
||||
<p></p> <dl>
|
||||
<dt> --prefix </dt><dd> Specify the installation prefix, e.g. /opt/root-system (<em>by default: /usr/local</em>)
|
||||
@ -577,7 +654,37 @@ When the <strong>configure</strong> script has been called successfully everythi
|
||||
$ make
|
||||
$ make install
|
||||
</pre>
|
||||
In order to finish the installation of <code>musrfit</code> the paths where <code>musrfit</code> searches for data files should be adjusted in the installed <strong>musrfit_startup.xml</strong> (/cygdrive/c/root/bin/musrfit_startup.xml or C:\root\bin\musrfit_startup.xml). The paths have to obey the <code>POSIX</code> naming convention. For detailed information on this XML file refer to the <a href="MusrFit.html#MusrfitStartupXml">manual</a>.
|
||||
<p></p>
|
||||
<h3 id="A_4.2.2_61_61musrfit_61_61_build_with_61_61cmake_61_61"> 4.2.2 <code><b>musrfit</b></code> build with <code><b>cmake</b></code> </h3>
|
||||
<p></p>
|
||||
Currently the following configuration switches for <code>musrfit</code> are available:
|
||||
<p></p> <dl>
|
||||
<dt> -DCMAKE_INSTALL_PREFIX=<prefix-path> </dt><dd> Specify the installation prefix, i.e. the place where <code>musrfit</code> shall be installed, e.g. $ROOTSYS if already defined (<em>by default: /usr/local</em>)
|
||||
</dd> <dt> -Dnexus=<value> </dt><dd> enable/disable the support of <code>NeXus</code> data files (<em>requires the <code>HDF4</code>, <code>HDF5</code> and <code>NeXus</code> libraries to be installed</em>). <value>=1 enables <code>NeXus</code>, <value>=0 disables <code>NeXus</code>. The default setting, i.e. the switch is <strong>not</strong> provided is <code>NeXus</code> support is <strong>disabled</strong>.
|
||||
</dd> <dt> -DASlibs=<value> </dt><dd> enable/disable the <code>ASlibs</code>. <value>=1 enables the <code>ASlibs</code>, <value>=0 disables the <code>ASlibs</code>. The default setting, i.e. the switch is <strong>not</strong> provided is <code>ASlibs</code> support is <strong>disabled</strong>. For details see <a href="index.html">Documentation of user libs</a>.
|
||||
</dd> <dt> -DBMWlibs=<value> </dt><dd> enable/disable the <code>BMWlibs</code>. <value>=1 enables the <code>BMWlibs</code>, <value>=0 disables the <code>BMWlibs</code>. The default setting, i.e. the switch is <strong>not</strong> provided is <code>BMWlibs</code> support is <strong>disabled</strong>. For details see <a href="index.html">Documentation of user libs</a>.
|
||||
</dd> <dt> -DBNMRlibs=<value> </dt><dd> enable/disable the <code>BNMRlibs</code>. <value>=1 enables the <code>BNMRlibs</code>, <value>=0 disables the <code>BNMRlibs</code>. The default setting, i.e. the switch is <strong>not</strong> provided is <code>BNMRlibs</code> support is <strong>disabled</strong>.
|
||||
</dd> <dt> -Dqt_based_tools=<value> </dt><dd> Will try to get musredit, musrWiz, musrStep, and mupp installed, if <code>Qt</code> is found. By default this is <strong>enabled</strong>. Again <value>=0 means disabled, <value>=1 enabled.
|
||||
</dd> <dt> -Dqt_version=<value> </dt><dd> Allows to specify which <code>Qt</code> version shall be tried. <value> can take the values: <code>AUTO</code>, 3, 4, 5. If the value is set to <code>AUTO</code>, this highest installed version is chosen, otherwise the specified version is used.
|
||||
</dd> <dt> -Dtry_OpenMP=<value> </dt><dd> Will check if <code>OpenMP</code> support is possible, and if yes use it. The default is <strong>enabled</strong>
|
||||
</dd></dl>
|
||||
<p></p>
|
||||
Normally it should not be necessary to make use of any of the options except for specifying the installation path with <strong>-DCMAKE_INSTALL_PREFIX</strong>. <code>musrfit</code> build with <code>cmake</code> takes the out-of-source approach. Therefore a typical configuration / make / install process including <code>NeXus</code> support would look like
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ cd $HOME/Apps/musrfit
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
$ cmake ../ -DCMAKE_INSTALL_PREFIX=$ROOTSYS -Dnexus=1
|
||||
# below it is assumed that multiple cores are present, hence the -j8 option
|
||||
$ cmake --build ./ --clean-first -- -j8
|
||||
$ make install
|
||||
$ /sbin/ldconfig # (as superuser)
|
||||
</pre>
|
||||
<p></p>
|
||||
<h3 id="A_4.2.3_61_61musrfit_61_61_last_step_of_the_installation"> 4.2.3 <code><b>musrfit</b></code> last step of the installation </h3>
|
||||
<p></p>
|
||||
In order to finish the installation of <code>musrfit</code> the paths where <code>musrfit</code> searches for data files should be adjusted in the installed <strong>musrfit_startup.xml</strong> (/cygdrive/c/root/bin/musrfit_startup.xml or C:\root\bin\musrfit_startup.xml). The paths have to obey the POSIX naming convention. For detailed information on this XML file refer to the <a href="MusrFit.html#MusrfitStartupXml">manual</a>.
|
||||
<p></p>
|
||||
<span id="MusrEditInstallCygwin"></span>
|
||||
<h2 id="A_4.3_61_61musredit_61_61"> 4.3 <code><b>musredit</b></code> </h2>
|
||||
@ -625,20 +732,21 @@ In this case, try to do the following: Close all Cygwin programs (including the
|
||||
</pre>
|
||||
If this does not resolve the problem, try to change the compatibility settings of <strong>C:\cygwin\bin\sh.exe</strong> and <strong>C:\cygwin\bin\bash.exe</strong> so that they are executed with administrator privileges.
|
||||
<p></p>
|
||||
<h1 id="A_5_Mac_OS_X"> 5 Mac OS X </h1>
|
||||
<h1 id="A_5_Mac_OS_X_47_macOS"> 5 Mac OS X / macOS </h1>
|
||||
<p></p>
|
||||
With Mac OS X the situation is up to some extent similar like on MS Windows but still different since Mac OS X is a UNIX system. The similarity is that also on OS X a helping framework—<i>either</i> <code><a href="http://www.macports.org/">MacPorts</a></code> <em>or</em> <code><a href="http://www.finkproject.org/">Fink</a></code>—which provides open-source software is employed to fulfill the basic software requirements of <code>musrfit</code>. <span class='foswikiRedFG'>In the following, both possibilities (using <code>MacPorts</code> or <code>Fink</code>) are described but it is emphasized here that it should be followed <em>only one of the possible routes</em>.
|
||||
With Mac OS X / macOS the situation is up to some extent similar like on MS Windows but still different since Mac OS X is a UNIX system. The similarity is that also on OS X a helping framework—<i>either</i> <code><a href="http://www.macports.org/">MacPorts</a></code> <em>or</em> <code><a href="http://www.finkproject.org/">Fink</a></code>—which provides open-source software is employed to fulfill the basic software requirements of <code>musrfit</code>. <span class='foswikiRedFG'>In the following, both possibilities (using <code>MacPorts</code> or <code>Fink</code>) are described but it is emphasized here that it should be followed <em>only one of the possible routes</em> </span>.
|
||||
<p></p>
|
||||
WARNING: The instruction for <code>Fink</code> haven't been updated/tested for quite a while and likely are slightly outdated.
|
||||
</span>
|
||||
<p></p>
|
||||
<p></p>
|
||||
<p></p>
|
||||
<h2 id="A_5.1_Requirements_40_61_61MacPorts_61_61_41"> 5.1 Requirements (<code><b>MacPorts</b></code>) </h2>
|
||||
<h3 id="A_5.1.1_Everything_but_61_61ROOT_61_61_and_61_61NeXus_61_61"> 5.1.1 Everything but <code><b>ROOT</b></code> and <code><b>NeXus</b></code> </h3>
|
||||
Before proceeding with the usage of the <code><a href="http://www.macports.org/">MacPorts</a></code> system first a few useful tools provided by Apple together with OS X (on the installation DVD/CDs) should be installed:
|
||||
$ <a href="http://developer.apple.com/technology/tools.html">Xcode tools</a>: Useful developer tools including for instance the GNU compiler collection. Starting from XCode >= 4.3 the command line tools need to be installed manually. <dl>
|
||||
<dt> X11 </dt><dd> The X-window system (automatically installed on 10.5 Leopard and 10.6 Snow Leopard). For 10.7 and higher you also will need to install <code><a href="http://xquartz.macosforge.org/trac">XQuartz</a></code>
|
||||
Before proceeding with the usage of the <code><a href="http://www.macports.org/">MacPorts</a></code> system first a few useful tools provided by Apple together with OS X (on the installation DVD/CDs) should be installed: <dl>
|
||||
<dt> Xcode </dt><dd> Useful developer tools including for instance the GNU compiler collection. It can be installed via the Apple App store. Starting from XCode >= 4.3 the command line tools need to be installed manually. The necessary command line tools can be installed via the following commands entered in the terminal<pre class="bash">
|
||||
$ xcode-select --install
|
||||
$ sudo xcodebuild -license
|
||||
</pre>
|
||||
</dd> <dt> X11 </dt><dd> The X-window system (automatically installed on 10.5 Leopard and 10.6 Snow Leopard). For 10.7 and higher you also will need to install <code><a href="http://xquartz.macosforge.org/trac">XQuartz</a></code>
|
||||
</dd></dl>
|
||||
<p></p>
|
||||
After installing the Xcode tools go to the <a href="http://www.macports.org/install.php">MacPorts install page</a>, download the installer for your system and follow the installation instructions on the page. By default the <code>MacPorts</code> system will be installed in <strong>/opt/local</strong>.<br>
|
||||
@ -663,9 +771,9 @@ file:///Users/username/dports
|
||||
Then the <code>MacPorts</code> system should be set up and can be used to install additional software.<br>
|
||||
The installation of the software mentioned <a class="foswikiCurrentTopicLink" href="#ReqSw">above</a> is then done in the terminal:
|
||||
<pre class="bash">
|
||||
$ sudo port -v install pkgconfig autoconf automake libtool fftw-3 fftw-3-single gsl boost libxml2 qt4-mac
|
||||
$ sudo port -v install pkgconfig autoconf automake libtool cmake fftw-3 fftw-3-single gsl boost libxml2 qt5 qt5-qtsvg qt5-qtwebengine
|
||||
</pre>
|
||||
With <code><b>qt4-mac</b></code>, <code>musredit</code> will be installed. If it happens that you used <code>musrgui</code> in the past, please change over to <code>musredit</code> since there will be <strong>no</strong> further development for <code>musrgui</code> anymore!
|
||||
With <code><b>qt5</b></code>, <code>musredit</code> will be installed. If it happens that you used <code>musrgui</code> in the past, please change over to <code>musredit</code> since there will be <strong>no</strong> further development for <code>musrgui</code> anymore!
|
||||
<p></p>
|
||||
<h3 id="A_5.1.2_Installation_of_61_61NeXus_61_61_requirements_40optional_41"> 5.1.2 Installation of <code><b>NeXus</b></code> requirements (optional) </h3>
|
||||
<p></p>
|
||||
@ -697,6 +805,17 @@ Unfortunately, the <code>minixml</code> and <code>NeXus</code> libraries have to
|
||||
<h3 id="A_5.1.3_61_61ROOT_61_61"> 5.1.3 <code><b>ROOT</b></code> </h3>
|
||||
ROOT 5.34/xx is supported as legacy version only! <strong>The default now will be ROOT 6.xx/yy!</strong>
|
||||
<p></p>
|
||||
<h4 id="A_5.1.3.1_61_61ROOT_61_61_installed_via_package_installer"> 5.1.3.1 <code><b>ROOT</b></code> installed via package installer </h4>
|
||||
The lazy way to get <code>ROOT</code> installed is via package installer. If your macOS is directly supported by the <code>ROOT</code> people you can download the package installer from the <code>ROOT</code> <a href="https://root.cern.ch/downloading-root">download page</a>. Choose the latest <code>ROOT</code> release and download you macOS version dmg-file, e.g. for macOS 10.12 (Sierra) it is at the time of writting <code>root_v6.10.02.macosx64-10.12-clang81.dmg</code>. After the installation <code>ROOT</code> will be installed under <code>/Application</code> as owner <code>root</code>. In order to ease your life for the steps to follow and assuming you are the only guy working on your Mac, you could change the <code>owner</code> and <code>group</code> of the <code>ROOT</code> directory:
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ cd /Applications
|
||||
$ sudo chown -R <username> root_v6.10.02
|
||||
$ sudo chgrp -R staff root_v6.10.02
|
||||
$ sudo ln -s root_v6.10.02 root
|
||||
</pre>
|
||||
<p></p>
|
||||
<h4 id="A_5.1.3.2_61_61ROOT_61_61_installed_from_source"> 5.1.3.2 <code><b>ROOT</b></code> installed from source </h4>
|
||||
The best way to get <code>ROOT</code> exactly the way needed for <code>musrfit</code> is to install it from source. Before describing it, please make sure that you have installed all required packages listed under <a class="foswikiCurrentTopicLink" href="#ReqSw">Requested Software</a> (e.g. fftw, gsl, etc).
|
||||
<p></p>
|
||||
For the following it is assumed that <code>ROOT</code> shall be installed under <code>$HOME/Applications</code>. If you want to install it somewhere else, just systematically replace the related terms of the following description. For the following list of commands the '$' will be given, the command prompt. Do <strong>not</strong> enter it! Also some comments will be added starting with a '#' which can be omitted. They are only there to explain what is going on.
|
||||
@ -705,9 +824,9 @@ For the following it is assumed that <code>ROOT</code> shall be installed under
|
||||
$ git clone http://root.cern.ch/git/root.git
|
||||
$ cd root
|
||||
$ git tag -l
|
||||
$ # git tag -l will list all available tags. In the next command choose the tag v6-08-xx
|
||||
$ # where xx is the highest listed number, e.g. v6-08-06
|
||||
$ git checkout -b v6-08-06 v6-08-06
|
||||
$ # git tag -l will list all available tags. In the next command choose the tag v6-10-xx
|
||||
$ # where xx is the highest listed number, e.g. v6-10-02
|
||||
$ git checkout -b v6-10-02 v6-10-02
|
||||
$ # now ROOT is ready to be configured. Below you will find the minimal ROOT configuration needed.
|
||||
$ # We will use the cmake out-of-source approach here.
|
||||
$ mkdir root_build
|
||||
@ -723,11 +842,12 @@ For the following it is assumed that <code>ROOT</code> shall be installed under
|
||||
<p></p>
|
||||
For further details see <a href="https://root.cern.ch/building-root">Installing ROOT from Source</a>.
|
||||
<p></p>
|
||||
<h4 id="A_5.1.3.3_Setting_up_Environment_Variables_for_61_61ROOT_61_61_and_61_61musrfit_61_61"> 5.1.3.3 Setting up Environment Variables for <code><b>ROOT</b></code> and <code><b>musrfit</b></code> </h4>
|
||||
Since Apple in its wisdom decided that programs started from a shell are treated differently than apps if it is coming to system variables, we need to work harder compared to a Linux system.
|
||||
<p></p>
|
||||
<strong>For Mac OS X < 10.8:</strong>
|
||||
<p></p>
|
||||
In order to finalize the <code>ROOT</code> installation and to prepare already the installation of <code>musrfit</code> and <code>musrgui</code> / <code>musredit</code> this is a good time for setting necessary environment variables for the use in Mac OS X. Put the following lines (without the comments in parentheses and with the paths adjusted to your local installation) into the file <strong>~/.MacOSX/environment.plist</strong> and <span class='foswikiRedFG'>re-login</span>:<br>
|
||||
In order to finalize the <code>ROOT</code> installation and to prepare already the installation of <code>musrfit</code> and <code>musrgui</code> / <code>musredit</code> this is a good time for setting necessary environment variables for the use in Mac OS X. Here it assumed that you installed <code>ROOT</code> from source. If you downloaded the binary package, you will need to adopt the paths accordingly. Put the following lines (without the comments in parentheses and with the paths adjusted to your local installation) into the file <strong>~/.MacOSX/environment.plist</strong> and <span class='foswikiRedFG'>re-login</span>:<br>
|
||||
<pre class="html">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
@ -748,17 +868,30 @@ In order to finalize the <code>ROOT</code> installation and to prepare already t
|
||||
One needs to add some system variables in <strong>~/.profile</strong>:
|
||||
<pre class="bash">
|
||||
export ROOTSYS=$HOME/Applications/root/root_exec
|
||||
launchctl setenv ROOTSYS $ROOTSYS
|
||||
export MUSRFITPATH=$ROOTSYS/bin
|
||||
launchctl setenv MUSRFITPATH $MUSRFITPATH
|
||||
export PATH=$ROOTSYS/bin:$QTDIR/bin:$PATH
|
||||
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH
|
||||
|
||||
launchctl setenv ROOTSYS $ROOTSYS
|
||||
launchctl setenv MUSRFITPATH $MUSRFITPATH
|
||||
launchctl setenv PATH $PATH
|
||||
launchctl setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH
|
||||
</pre>
|
||||
<p></p>
|
||||
After this you will need to `execute' <code>.profile</code> before proceeding:
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ source $HOME/.profile
|
||||
</pre>
|
||||
<h2 id="A_5.2_Requirements_40_61_61Fink_61_61_41"> 5.2 Requirements (<code><b>Fink</b></code>) </h2>
|
||||
<h3 id="A_5.2.1_Everything_but_61_61ROOT_61_61_and_61_61NeXus_61_61"> 5.2.1 Everything but <code><b>ROOT</b></code> and <code><b>NeXus</b></code> </h3>
|
||||
Before proceeding with the usage of the <code><a href="http://www.finkproject.org/">Fink</a></code> system first a few useful tools provided by Apple together with OS X (on the installation DVD/CDs) should be installed:
|
||||
$ <a href="http://developer.apple.com/technology/tools.html">Xcode tools</a>: Useful developer tools including for instance the GNU compiler collection <dl>
|
||||
<dt> X11 </dt><dd> The X-window-system (automatically installed on 10.5 Leopard and 10.6 Snow Leopard)
|
||||
<p></p> <dl>
|
||||
<dt> <strong>Xcode</strong> </dt><dd> Useful developer tools including for instance the GNU compiler collection. It can be installed via the Apple App Store. Starting from XCode >= 4.3 the command line tools need to be installed manually. The necessary command line tools can be installed via the following commands entered in the terminal:<pre class="bash">
|
||||
$ xcode-select --install
|
||||
$ sudo xcodebuild -license
|
||||
</pre>
|
||||
</dd> <dt> <strong>X11</strong> </dt><dd> The X-window-system (automatically installed on 10.5 Leopard and 10.6 Snow Leopard)
|
||||
</dd></dl>
|
||||
<p></p>
|
||||
After installing the Xcode tools go to the <a href="http://www.finkproject.org/download/index.php?phpLang=en">Fink download page</a>, download the installer for your system and follow the installation instructions on the page.
|
||||
@ -773,9 +906,11 @@ After applying the changes above to the configuration file, the <code>Fink</code
|
||||
Then the <code>Fink</code> system should be set up and can be used to install additional software.<br>
|
||||
The <code>Fink</code> installer package also contains a graphical user interface called <code>FinkCommander</code> and it is suggested to use that for installing the following packages (or packages with revisions close to the following)—it is necessary to compile a few packages from source since no binary packages are available, however, this is done automatically by the <code>FinkCommander</code> after you have chosen the software packages for installation:
|
||||
<p></p>
|
||||
<code><b>autoconf automake boost1.41.nopython boost1.41.nopython-shlibs fftw3 fftw3-shlibs gsl gsl-shlibs libtool2 libtool2-shlibs libxml2 libxml2-bin libxml2-shlibs pkgconfig qt3mac qt3mac-shlibs</b></code>
|
||||
<pre class="bash">
|
||||
autoconf automake cmake boost1.63-nopython boost1.63.nopython-shlibs fftw3 fftw3-shlibs gsl gsl-shlibs libtool2 libtool2-shlibs libxml2 libxml2-bin libxml2-shlibs pkgconfig qt5-mac-qtbase qt5-mac-qtbase-dev-tools qt5-mac-qtsvg qt5-mac-qtsvg-shlibs qt5-mac-qtwebengine qt5-mac-qtwebengine-shlibs qt5-mac-qtwebenginecore-shlibs qt5-mac-qtwebenginewidgets-shlibs
|
||||
</pre>
|
||||
<p></p>
|
||||
Under OS X 10.6 Snow Leopard it will not be possible to install <code><b>qt3mac</b></code> since the system is by default a 64-bit system and the old <code><b>qt3-mac</b></code> depends on software which is only available for 32-bit systems. It is suggested to install <code><b>qt4mac</b></code> instead and use <code>musredit</code>.
|
||||
Under OS X 10.6 Snow Leopard it will not be possible to install <code><b>qt3mac</b></code> since the system is by default a 64-bit system and the old <code><b>qt3-mac</b></code> depends on software which is only available for 32-bit systems. It is suggested to install <code><b>qt5-mac</b></code> instead and use <code>musredit</code>.
|
||||
<p></p>
|
||||
Also, due to some not fulfilled dependencies, it might not be possible to install FFTW3 through Fink. In this case (<span class='foswikiRedFG'>and ONLY in THIS case</span>) simply download the FFTW3 source code from <a href="http://www.fftw.org/download.html">its download page</a> and install it from a terminal using the following commands (for the FFTW version 3.x.y):
|
||||
<pre class="bash">
|
||||
@ -790,13 +925,15 @@ Since later on the <code>boost</code> header files should be used and in the sta
|
||||
<pre class="bash">
|
||||
$ ln -sf /sw/include/boost-x_yy_z/boost /sw/include/boost
|
||||
</pre>
|
||||
where <strong>x_yy_z</strong> has to be substituted by the correct version number, e.g. <strong>1_41_0</strong>.
|
||||
where <strong>x_yy_z</strong> has to be substituted by the correct version number, e.g. <strong>1_63_0</strong>.
|
||||
<p></p>
|
||||
<h3 id="A_5.2.2_Installation_of_61_61NeXus_61_61_requirements_40optional_41"> 5.2.2 Installation of <code><b>NeXus</b></code> requirements (optional) </h3>
|
||||
<p></p>
|
||||
<span class='foswikiRedFG'>Only if</span> <code>musrfit</code> should support reading data files in the <code>NeXus</code> format the further <a class="foswikiCurrentTopicLink" href="#ReqSwNeXus">required</a> packages can be installed through <code>Fink</code>:
|
||||
<span class='foswikiRedFG'>Only if</span> <code>musrfit</code> should support reading data files in the <code>NeXus</code> format the further <a class="foswikiCurrentTopicLink" href="#ReqSwNeXus">required</a> packages can be installed through <code>Fink</code> (check for the most recent versions):
|
||||
<p></p>
|
||||
<code><b>libjpeg hdf hdf5-18 hdf5-18-shlibs</b></code>
|
||||
<pre class="bash">
|
||||
libjpeg hdf hdf5-cpp11 hdf5-cpp11-shlibs
|
||||
</pre>
|
||||
<p></p>
|
||||
Unfortunately, the <code>minixml</code> and <code>NeXus</code> libraries have to be compiled and installed directly from the source code. Given the respective version numbers of <strong>2.9</strong> and <strong>4.3.2</strong> (which are subject to change with time) this can be achieved for example by:
|
||||
<pre class="bash">
|
||||
@ -820,6 +957,21 @@ Unfortunately, the <code>minixml</code> and <code>NeXus</code> libraries have to
|
||||
</pre>
|
||||
<p></p>
|
||||
<h3 id="A_5.2.3_61_61ROOT_61_61"> 5.2.3 <code><b>ROOT</b></code> </h3>
|
||||
<p></p>
|
||||
ROOT 5.34/xx is supported as legacy version only and will likely to be dropped in 2018. <strong>The default now is ROOT 6.xx/yy!</strong>
|
||||
<p></p>
|
||||
<h4 id="A_5.2.3.1_61_61ROOT_61_61_installed_via_package_installer"> 5.2.3.1 <code><b>ROOT</b></code> installed via package installer </h4>
|
||||
<p></p>
|
||||
The lazy way to get ROOT installed is via package installer. If your macOS is directly supported by the ROOT people you can download the package installer from the ROOT <a href="https://root.cern.ch/downloading-root">download page</a>. Choose the latest ROOT release and download you macOS version dmg-file, e.g. for macOS 10.12 (Sierra) it is at the time of writting root_v6.10.02.macosx64-10.12-clang81.dmg. After the installation ROOT will be installed under /Application as owner root. In order to ease your life for the steps to follow and assuming you are the only guy working on your Mac, you could change the owner and group of the ROOT directory:
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ cd /Applications
|
||||
$ sudo chown -R <username> root_v6.10.02
|
||||
$ sudo chgrp -R staff root_v6.10.02
|
||||
$ sudo ln -s root_v6.10.02 root
|
||||
</pre>
|
||||
<h4 id="A_5.2.3.2_61_61ROOT_61_61_installed_from_source"> 5.2.3.2 <code><b>ROOT</b></code> installed from source </h4>
|
||||
<p></p>
|
||||
The best way to get <code>ROOT</code> exactly the way needed for <code>musrfit</code> is to install it from source. Before describing it, please make sure that you have installed all required packages listed under <a class="foswikiCurrentTopicLink" href="#ReqSw">Requested Software</a> (e.g. fftw, gsl, etc).
|
||||
<p></p>
|
||||
For the following it is assumed that <code>ROOT</code> shall be installed under <code>$HOME/Applications</code>. If you want to install it somewhere else, just systematically replace the related terms of the following description. For the following list of commands the '$' will be given, the command prompt. Do <strong>not</strong> enter it! Also some comments will be added starting with a '#' which can be omitted. They are only there to explain what is going on.
|
||||
@ -828,9 +980,9 @@ For the following it is assumed that <code>ROOT</code> shall be installed under
|
||||
$ git clone http://root.cern.ch/git/root.git
|
||||
$ cd root
|
||||
$ git tag -l
|
||||
$ # git tag -l will list all available tags. In the next command choose the tag v6-08-06
|
||||
$ # where xx is the highest listed number, e.g. v6-08-06
|
||||
$ git checkout -b v6-08-06 v6-08-06
|
||||
$ # git tag -l will list all available tags. In the next command choose the tag v6-10-02
|
||||
$ # where xx is the highest listed number, e.g. v6-10-02
|
||||
$ git checkout -b v6-10-06 v6-10-02
|
||||
$ # now ROOT is ready to be configured. Below you will find the minimal ROOT configuration needed.
|
||||
$ # the out-of-source approach will be followed
|
||||
$ mkdir root_build
|
||||
@ -845,11 +997,13 @@ For the following it is assumed that <code>ROOT</code> shall be installed under
|
||||
<p></p>
|
||||
For further details see <a href="http://root.cern.ch/drupal/content/installing-root-source">Installing ROOT from Source</a>.
|
||||
<p></p>
|
||||
<h4 id="A_5.2.3.3_Setting_up_Environment_Variables_for_61_61ROOT_61_61_and_61_61musrfit_61_61"> 5.2.3.3 Setting up Environment Variables for <code><b>ROOT</b></code> and <code><b>musrfit</b></code> </h4>
|
||||
<p></p>
|
||||
Since Apple in its wisdom decided that programs started from a shell are treated differently than apps if it is coming to system variables, we need to work harder compared to a Linux system.
|
||||
<p></p>
|
||||
<strong>For Mac OS X < 10.8:</strong>
|
||||
<p></p>
|
||||
In order to finalize the <code>ROOT</code> installation and to prepare already the installation of <code>musrfit</code> and <code>musrgui</code> / <code>musredit</code> this is a good time for setting necessary environment variables for the use in Mac OS X. Put the following lines (without the comments in parentheses and with the paths adjusted to your local installation) into the file <strong>~/.MacOSX/environment.plist</strong> and <span class='foswikiRedFG'>re-login</span>:<br>
|
||||
In order to finalize the <code>ROOT</code> installation and to prepare already the installation of <code>musrfit</code> and <code>musrgui</code> / <code>musredit</code> this is a good time for setting necessary environment variables for the use in Mac OS X. Here it assumed that you installed ROOT from source. If you downloaded the binary package, you will need to adopt the paths accordingly. Put the following lines (without the comments in parentheses and with the paths adjusted to your local installation) into the file <strong>~/.MacOSX/environment.plist</strong> and <span class='foswikiRedFG'>re-login</span>:<br>
|
||||
<pre class="html">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
@ -858,7 +1012,7 @@ In order to finalize the <code>ROOT</code> installation and to prepare already t
|
||||
<key>MUSRFITPATH</key>
|
||||
<string>$HOME/Applications/root/root_exec/bin</string> (where to find the musrfit executables)
|
||||
<key>QTDIR</key>
|
||||
<string>/opt/local/lib/qt3mac</string> (where to find Qt3 (for musrgui) or Qt4 (for musredit))
|
||||
<string>/sw/lib/qt5-mac</string> (where to find Qt5)
|
||||
<key>ROOTSYS</key>
|
||||
<string>$HOME/Applications/root/root_exec</string> (where to find the ROOT system)
|
||||
</dict>
|
||||
@ -870,10 +1024,24 @@ In order to finalize the <code>ROOT</code> installation and to prepare already t
|
||||
One needs to add some system variables in <strong>~/.profile</strong>:
|
||||
<pre class="bash">
|
||||
export ROOTSYS=$HOME/Applications/root/root_exec
|
||||
launchctl setenv ROOTSYS $ROOTSYS
|
||||
export MUSRFITPATH=$ROOTSYS/bin
|
||||
launchctl setenv MUSRFITPATH $MUSRFITPATH
|
||||
export QTDIR=/sw/lib/qt5-mac
|
||||
export PATH=$ROOTSYS/bin:$QTDIR/bin:$PATH
|
||||
export PKG_CONFIG_PATH=$QTDIR/lib/pkgconfig:$PKG_CONFIG_PATH
|
||||
export LD_LIBRARY_PATH=$ROOTSYS/lib:$QTDIR/lib:$LD_LIBRARAY_PATH
|
||||
|
||||
launchctl setenv ROOTSYS $ROOTSYS
|
||||
launchctl setenv MUSRFITPATH $MUSRFITPATH
|
||||
launchctl setenv QTDIR $QTDIR
|
||||
launchctl setenv PKG_CONFIG_PATH $PKG_CONFIG_PATH
|
||||
launchctl setenv PATH $PATH
|
||||
launchctl setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH
|
||||
</pre>
|
||||
<p></p>
|
||||
After this you will need to `execute' <code>.profile</code> before proceeding:
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ source $HOME/.profile
|
||||
</pre>
|
||||
<h2 id="A_5.3_61_61musrfit_61_61"> 5.3 <code><b>musrfit</b></code> </h2>
|
||||
First, the most recent source code should be downloaded. First, the most recent source code should be downloaded. The preferred way of doing so is to clone the musrfit repository via git. Assuming the code should be located in ~/Applications/musrfit this is achieved most easily calling from the terminal
|
||||
@ -904,6 +1072,8 @@ If a local repository clone is already present, one can update it using:
|
||||
<p></p>
|
||||
<span class='foswikiRedFG'>As an alternative (if git is not available)</span>, the source code can also be downloaded from the following web-page: <a href="https://bitbucket.org/muonspin/musrfit/downloads">musrfit at bitbucket</a>.
|
||||
<p></p>
|
||||
<h3 id="A_5.3.1_61_61musrfit_61_61_build_with_61_61automake_61_61"> 5.3.1 <code><b>musrfit</b></code> build with <code><b>automake</b></code> </h3>
|
||||
<p></p>
|
||||
After the source-code extraction the <strong>autogen.sh</strong> script is called to prepare the build environment. If it has been executed successfully the <strong>configure</strong> script should be ready to collect all the information needed to create the Makefiles. <span class='foswikiRedFG'>If <code>musrfit</code> should support <code>NeXus</code> data files this has to be enabled by specifying the <strong>--enable-NeXus</strong> switch when calling <strong>configure</strong>.</span> For an overview of all available options just call <code>./configure --help</code>. Besides the standard options there are a few special options which should be mentioned here:
|
||||
<p></p> <dl>
|
||||
<dt> --prefix </dt><dd> Specify the installation prefix, e.g. /opt/root-system (<em>by default: /usr/local</em>)
|
||||
@ -933,11 +1103,47 @@ When the <strong>configure</strong> script has been called successfully everythi
|
||||
</pre>
|
||||
In order to finish the installation of <code>musrfit</code> the paths where <code>musrfit</code> searches for data files should be adjusted in the installed <strong>musrfit_startup.xml</strong> ($ROOTSYS/bin/musrfit_startup.xml). For detailed information on this XML file refer to the <a href="MusrFit.html#MusrfitStartupXml">manual</a>.
|
||||
<p></p>
|
||||
<h3 id="A_5.3.2_61_61musrfit_61_61_build_with_61_61cmake_61_61"> 5.3.2 <code><b>musrfit</b></code> build with <code><b>cmake</b></code> </h3>
|
||||
<p></p>
|
||||
Currently the following configuration switches for <code>musrfit</code> are available:
|
||||
<p></p> <dl>
|
||||
<dt> -DCMAKE_INSTALL_PREFIX=<prefix-path> </dt><dd> Specify the installation prefix, i.e. the place where <code>musrfit</code> shall be installed, e.g. $ROOTSYS if already defined (<em>by default: /usr/local</em>)
|
||||
</dd> <dt> -Dnexus=<value> </dt><dd> enable/disable the support of <code>NeXus</code> data files (<em>requires the <code>HDF4</code>, <code>HDF5</code> and <code>NeXus</code> libraries to be installed</em>). <value>=1 enables <code>NeXus</code>, <value>=0 disables <code>NeXus</code>. The default setting, i.e. the switch is <strong>not</strong> provided is <code>NeXus</code> support is <strong>disabled</strong>.
|
||||
</dd> <dt> -DASlibs=<value> </dt><dd> enable/disable the <code>ASlibs</code>. <value>=1 enables the <code>ASlibs</code>, <value>=0 disables the <code>ASlibs</code>. The default setting, i.e. the switch is <strong>not</strong> provided is <code>ASlibs</code> support is <strong>disabled</strong>. For details see <a href="index.html">Documentation of user libs</a>.
|
||||
</dd> <dt> -DBMWlibs=<value> </dt><dd> enable/disable the <code>BMWlibs</code>. <value>=1 enables the <code>BMWlibs</code>, <value>=0 disables the <code>BMWlibs</code>. The default setting, i.e. the switch is <strong>not</strong> provided is <code>BMWlibs</code> support is <strong>disabled</strong>. For details see <a href="index.html">Documentation of user libs</a>.
|
||||
</dd> <dt> -DBNMRlibs=<value> </dt><dd> enable/disable the <code>BNMRlibs</code>. <value>=1 enables the <code>BNMRlibs</code>, <value>=0 disables the <code>BNMRlibs</code>. The default setting, i.e. the switch is <strong>not</strong> provided is <code>BNMRlibs</code> support is <strong>disabled</strong>.
|
||||
</dd> <dt> -Dqt_based_tools=<value> </dt><dd> Will try to get musredit, musrWiz, musrStep, and mupp installed, if <code>Qt</code> is found. By default this is <strong>enabled</strong>. Again <value>=0 means disabled, <value>=1 enabled.
|
||||
</dd> <dt> -Dqt_version=<value> </dt><dd> Allows to specify which <code>Qt</code> version shall be tried. <value> can take the values: <code>AUTO</code>, 3, 4, 5. If the value is set to <code>AUTO</code>, this highest installed version is chosen, otherwise the specified version is used.
|
||||
</dd> <dt> -Dtry_OpenMP=<value> </dt><dd> Will check if <code>OpenMP</code> support is possible, and if yes use it. The default is <strong>enabled</strong>
|
||||
</dd></dl>
|
||||
<p></p>
|
||||
Normally it should not be necessary to make use of any of the options except for specifying the installation path with <strong>-DCMAKE_INSTALL_PREFIX</strong>. <code>musrfit</code> build with <code>cmake</code> takes the out-of-source approach. Therefore a typical configuration / make / install process including <code>NeXus</code> support would look like
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ cd $HOME/Apps/musrfit
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
$ cmake ../ -DCMAKE_INSTALL_PREFIX=$ROOTSYS -Dnexus=1
|
||||
# below it is assumed that multiple cores are present, hence the -j8 option
|
||||
$ cmake --build ./ --clean-first -- -j8
|
||||
$ make install
|
||||
$ /sbin/ldconfig # (as superuser)
|
||||
</pre>
|
||||
<p></p>
|
||||
<h3 id="A_5.3.3_61_61musrfit_61_61_last_step_of_the_installation"> 5.3.3 <code><b>musrfit</b></code> last step of the installation </h3>
|
||||
<p></p>
|
||||
In order to finish the installation of <code>musrfit</code> two more things should be done: <ul>
|
||||
<li> Define the <strong>MUSRFITPATH</strong> environment variable containing the path to the <code>musrfit</code> executables and XML files. E.g. if the location of the example above is used append the following line to the <strong>~/.bashrc</strong> and <strong>~/.bash_profile</strong> (and then either restart the shell or call the same commands once more from the shell): <pre class="bash">
|
||||
export MUSRFITPATH=$ROOTSYS/bin
|
||||
</pre>
|
||||
</li> <li> Adjust the paths where <code>musrfit</code> will search for data files in the installed <strong>musrfit_startup.xml</strong>. For detailed information on this XML file refer to the <a href="MusrFit.html#MusrfitStartupXml">manual</a>.
|
||||
</li></ul>
|
||||
<p></p>
|
||||
<span id="MusrGuiInstall"></span>
|
||||
<h2 id="A_5.4_61_61musredit_61_61"> 5.4 <code><b>musredit</b></code> </h2>
|
||||
<span class='foswikiBlueFG'>In the latest version of <code>musrfit</code> the configure script tries to determine automatically if <code>Qt4.5</code> or higher is set up on the machine. In case this is found, the editor <code>musredit</code> is built already together with <code>musrfit</code>. <em>If not</em>, one can either try to call the configure script with the "--with-qt4" option (<strong>MacPort</strong>: for Mac OS X < 10.11 this is likley <strong>/opt/local/libexec/qt4</strong>, for Mac OS X >= 10.11 this is likely <strong>/usr/local/libexec/qt4</strong>) or install this editor separately:</span>
|
||||
<span class='foswikiBlueFG'>In the latest version of <code>musrfit</code> the configure script tries to determine automatically highest available Qt version. In case this is found, the editor <code>musredit</code> is built together with <code>musrfit</code>. <em>If not</em>, one can either try to call the configure script with the "--with-qt5" option or install this editor separately:</span>
|
||||
<pre class="bash">
|
||||
$ cd ~/Apps/musrfit/src/musredit
|
||||
$ cd ~/Applications/musrfit/src/musredit_qt5
|
||||
$ qmake musredit.pro
|
||||
</pre>
|
||||
If everything went fine <code>musredit</code> can be compiled and installed:
|
||||
@ -950,7 +1156,7 @@ The last command copies <strong>musredit.app</strong> to the standard program di
|
||||
<h2 id="A_5.5_61_61musrgui_61_61_40obsolete_41"> 5.5 <code><b>musrgui</b></code> (obsolete) </h2>
|
||||
If <code>Qt3</code> is set up the installation of the <code>musrfit</code> editor can be done as follows from within the shell:
|
||||
<pre class="bash">
|
||||
$ cd ~/Apps/musrfit/src/musrgui
|
||||
$ cd ~/Applications/musrfit/src/musrgui
|
||||
$ qmake musrgui.pro
|
||||
$ make
|
||||
$ make install
|
||||
@ -990,7 +1196,7 @@ If <code>musrgui</code> has been installed, just open one of the <strong>test-&#
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="patternInfo">This topic: MUSR<span class='foswikiSeparator'> > </span><a class="foswikiCurrentWebHomeLink" href="WebHome.html">WebHome</a> > <a href="MusrFit.html">MusrFit</a><span class='foswikiSeparator'> > </span>MusrFitSetup <br />
|
||||
Topic revision: <span class='patternRevInfo'>27 Mar 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
Topic revision: <span class='patternRevInfo'>08 Jun 2018, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -1008,5 +1214,5 @@ Topic revision: <span class='patternRevInfo'>27 Mar 2017, <a href="https://intr
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitSetup?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:39 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitSetup?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:56 GMT -->
|
||||
</html>
|
390
doc/html/user/MUSR/MusrFitSetupDKS.html
Normal file
390
doc/html/user/MUSR/MusrFitSetupDKS.html
Normal file
@ -0,0 +1,390 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitSetupDKS?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:56 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
<title> MUSR :: MusrFitSetupDKS</title>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.5, user-scalable=yes" />
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
<meta name="mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrFitSetupDKS?t=1528465296" type="application/x-wiki" title="edit MusrFitSetupDKS" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/colors.css');
|
||||
</style>
|
||||
<link rel='stylesheet' href='../pub/System/PatternSkinTheme2009/column_left.css' media='all' type='text/css' />
|
||||
<link rel='stylesheet' href='../pub/System/PatternSkinTheme2009/variant_twiki.css' media='all' type='text/css' /><style type="text/css" media="all">
|
||||
/* Styles that are set using variables */
|
||||
.patternBookView .foswikiTopRow,
|
||||
.patternWebIndicator,
|
||||
.patternWebIndicator a {
|
||||
background-color:#D0D0D0;
|
||||
}
|
||||
#patternTopBarContents { background-image:url(../pub/System/PatternSkin/header5.gif); background-repeat:repeat-x;}
|
||||
#patternTopBarContents { background-color:#ffffff;}
|
||||
.patternBookView {
|
||||
border-color:#D0D0D0;
|
||||
}
|
||||
.patternPreviewPage #patternMain {
|
||||
/* uncomment to set the preview image */
|
||||
/*background-image:url("/pub/System/PreviewBackground/preview2bg.gif");*/
|
||||
}
|
||||
</style>
|
||||
<style type="text/css" media="all">
|
||||
@import url("../pub/System/PsiSkin/psicolors.css");
|
||||
@import url("../pub/System/PsiSkin/psistyle.css");
|
||||
.foswikiTopic {overflow: hidden;}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='../pub/System/PatternSkin/print.css' media='all' type='text/css' />
|
||||
<!--[if IE 7 ]><style type="text/css" media="screen">
|
||||
.foswikiAttachments,
|
||||
.foswikiForm,
|
||||
.foswikiHelp,
|
||||
.foswikiPreviewArea,
|
||||
.patternPreviewPage .foswikiForm,
|
||||
.patternSigLine,
|
||||
.patternToolBar,
|
||||
.patternTop,
|
||||
.patternTopicAction,
|
||||
#patternSideBarContents .patternLeftBarPersonal,
|
||||
#patternSideBarContents h2,
|
||||
#patternSideBarContents li,
|
||||
#patternTopBarButtons ul {
|
||||
height:1%;
|
||||
}
|
||||
#patternSideBarContents .patternLeftBarPersonal {
|
||||
width:100%;
|
||||
}
|
||||
.foswikiFormStep {
|
||||
height:100%;
|
||||
}
|
||||
#foswikiLogin {
|
||||
margin-left: 25%;
|
||||
margin-right: 25%;
|
||||
}
|
||||
#foswikiLogin .foswikiFormSteps {
|
||||
width:auto;
|
||||
}
|
||||
#foswikiLogin input[type="text"],
|
||||
#foswikiLogin input[type="password"] {
|
||||
width: auto;
|
||||
}
|
||||
.patternShadow {
|
||||
border:10px solid #fff;
|
||||
margin-top:10px;
|
||||
margin-bottom:10px;
|
||||
border:2px solid #ccc;
|
||||
}
|
||||
</style><![endif]-->
|
||||
<!--[if lte IE 9]>
|
||||
|
||||
<![endif]-->
|
||||
<!--[if gt IE 9]><!-->
|
||||
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
<div id="patternPageShadow">
|
||||
<div id="patternPage">
|
||||
<div id="patternOuter" class="clear">
|
||||
<div id="patternFloatWrap">
|
||||
<div id="patternMain">
|
||||
<div id="patternMainContents">
|
||||
<div class="patternContent"><div class="foswikiTopic"> <h1 id="Setting_up_61musrfit_61_47_61DKS_61:_high_speed_fitting_with_GPU_39s"> Setting up <code>musrfit</code> / <code>DKS</code>: high speed fitting with GPU's </h1>
|
||||
<p></p>
|
||||
<div class="foswikiToc" id="foswikiTOC"> <ul>
|
||||
<li> <a href="MusrFitSetupDKS.html#Setting_up_61musrfit_61_47_61DKS_61:_high_speed_fitting_with_GPU_39s"> Setting up musrfit / DKS: high speed fitting with GPU's </a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_1_Setting_up_61_61musrfit_47DKS_61_61_for_a_Tesla_K40c_40NVIDIA_41"> 1 Setting up musrfit/DKS for a Tesla K40c (NVIDIA) </a> <ul>
|
||||
<li> <a href="MusrFitSetupDKS.html#A_1.1_Driver_Installation_for_the_Tesla_K40c"> 1.1 Driver Installation for the Tesla K40c </a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_1.2_Installation_of_CUDA"> 1.2 Installation of CUDA </a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_1.3_Installation_of_DKS"> 1.3 Installation of DKS </a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_1.4_Installation_of_61musrfit_61_for_DKS"> 1.4 Installation of musrfit for DKS </a> <ul>
|
||||
<li> <a href="MusrFitSetupDKS.html#A_1.4.1_Install_via_61_61automake_61_61"> 1.4.1 Install via automake </a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_1.4.2_Install_via_61_61cmake_61_61"> 1.4.2 Install via cmake </a>
|
||||
</li></ul>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_2_Setting_up_61_61musrfit_47DKS_61_61_for_a_AMD_Graphic_Card_40Radeon_R9_390X_41"> 2 Setting up musrfit/DKS for a AMD Graphic Card (Radeon R9 390X) </a> <ul>
|
||||
<li> <a href="MusrFitSetupDKS.html#A_2.1_Driver_Installation_for_an_AMD_Graphic_Card_44_e.g._Radeon_R9_390X"> 2.1 Driver Installation for an AMD Graphic Card, e.g. Radeon R9 390X </a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_2.2_AMD_APP_Software_Development_Kit_40SDK_41_to_enable_OpenCL_support"> 2.2 AMD APP Software Development Kit (SDK) to enable OpenCL support </a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_2.3_Installation_of_DKS_and_61musrfit_61"> 2.3 Installation of DKS and musrfit </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_3_Setting_up_61_61musrfit_47DKS_61_61_for_macOS_for_OpenCL_support"> 3 Setting up musrfit/DKS for macOS for OpenCL support </a>
|
||||
</li></ul>
|
||||
</div>
|
||||
<p></p>
|
||||
In the years 2016/2017 we explored ways to speed up current fitting frameworks, especially <code>musrfit</code>. This allows now to analyze histogram sets of high field spectrometers like HAL-9500 at PSI without the error-prone RRF fitting (see U. Locans and A. Suter, " <code>musrfit</code> - Real Time Parameter Fitting Using GPUs", accepted for the proceedings of the muSR2017 conference in Sapporo, and the Memo from A. Suter, "Rotating Reference Frame Fits", in the <code>musrfit</code> source code). At the same time it can help to speed-up elaborate global fits tremendously, and dealing properly with muonium. It also allows Apple Mac users to speed up their fitting code on the CPU. Currently it is not straight forward to get <code>musrfit</code> multi-threaded under macOS since Apple doesn't be default support OpenMP. DKS enables <code>musrfit</code> to utilize OpenCL instead which is present on macOS by default.
|
||||
<p></p>
|
||||
<strong>Warning</strong>: before you run into the shop to buy a gamer graphic card or a Tesla card, make sure that you have an appropriate server with a sufficiently strong power supply!
|
||||
<p></p>
|
||||
<strong>However, the current <code>musrfit/DKS</code> version doesn't yet support all theory functions on the GPU.</strong> In case the theory function is not yet available for the GPU, <code>musrfit</code> will fall back to the CPU implementation.
|
||||
<p></p>
|
||||
Conceptually the setup of <code>musrfit/DKS</code> is as following: <ol>
|
||||
<li> install the latest hardware driver for your graphic card.
|
||||
</li> <li> install the GPU SDK which enables number crunching (CUDA for NVIDIA, OpenCL for AMD)
|
||||
</li> <li> install DKS
|
||||
</li> <li> install the musrfit version which is DKS ready
|
||||
</li></ol>
|
||||
<p></p>
|
||||
In the following the description for the installation of <code>musrfit/DKS</code> for the following systems will be discussed in some more detail: <ul>
|
||||
<li> NVIDIA Tesla K40c
|
||||
</li> <li> AMD Graphic Card (Radeon R9 390X)
|
||||
</li> <li> macOS in order to get OpenCL support
|
||||
</li></ul>
|
||||
<p></p>
|
||||
The <strong>usage</strong> of <code>musrfit</code> with GPU acceleration and OpenCL support is described in the <a href="MusrFit.html">'User manual of the μSR data analysis software <code>musrfit</code> '</a>. The additional <code>musrfit</code> / DKS commands are labelled in <span class='foswikiMaroonFG'> <strong>MAROON</strong> </span>.
|
||||
<p></p>
|
||||
<h1 id="A_1_Setting_up_61_61musrfit_47DKS_61_61_for_a_Tesla_K40c_40NVIDIA_41"> 1 Setting up <code><b>musrfit/DKS</b></code> for a Tesla K40c (NVIDIA) </h1>
|
||||
<p></p>
|
||||
It is assumed that the Tesla K40c is already physically installed on your system. For now I only will discuss to set it up for a Linux based system. In order to check that your operating systems see the card, enter the following command in the terminal:
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ lspci | grep NVIDIA
|
||||
</pre>
|
||||
<p></p>
|
||||
On the response you should find something like
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
05:00.0 3D controller: NVIDIA Corporation GK110BGL [Tesla K40c] (rev a1)
|
||||
</pre>
|
||||
<p></p>
|
||||
which means that the OS physically recognises your card.
|
||||
<p></p>
|
||||
<h2 id="A_1.1_Driver_Installation_for_the_Tesla_K40c"> 1.1 Driver Installation for the Tesla K40c </h2>
|
||||
<p></p>
|
||||
Next, you will need to download and install the driver for your card. Select the proper operating system, card, etc. from the <a href="http://www.nvidia.com/Download/index.aspx?lang=en-us">NVIDIA download center</a>. At PSI we are running currently Red Hat Enterprise Linux 7.x (RHEL) for which we will get a rpm (something like <code>nvidia-diag-driver-local-repo-rhel7-375.66-1.x86_64.rpm</code>). Install it and make sure there is no conflict with the nouveau driver of the system.
|
||||
<p></p>
|
||||
<h2 id="A_1.2_Installation_of_CUDA"> 1.2 Installation of CUDA </h2>
|
||||
<p></p>
|
||||
Download the <a href="https://developer.nvidia.com/cuda-downloads">CUDA SDK</a> form NVIDIA for your system. Again, for the RHEL 7.x this is an rpm. After the installation of the rpm you should reboot your machine. Afterwards you are ready for the installation of DKS.
|
||||
<p></p>
|
||||
<span id="DksInstall"></span>
|
||||
<h2 id="A_1.3_Installation_of_DKS"> 1.3 Installation of DKS </h2>
|
||||
<p></p>
|
||||
For the following list of commands the '$' will be given as the command prompt. Do not enter it! Also some comments will be added starting with a '#' which can be omitted. They are only there to explain what is going on.
|
||||
<code>DKS</code> stands for Dynamical Kernel Scheduler and provides a thin interface allowing host applications to incorporate GPU's and other hardware accelerators.
|
||||
<p></p>
|
||||
Details can be found in the papers listed <a href="CiteMusrFit.html">here</a>, or on the <a href="https://gitlab.psi.ch/uldis_l/DKS/wikis/home">DKS wiki page</a>.
|
||||
<p></p>
|
||||
In brief the installation should be something like this:<pre class="bash">
|
||||
# go to whatever directory you would like to clone/install DKS
|
||||
# For macOS DKS will likely to got to $HOME/Applications to be consistent with the musrfit docu for macOS
|
||||
$ cd $HOME/Apps
|
||||
$ git clone https://gitlab.psi.ch/uldis_l/DKS.git
|
||||
$ cd DKS
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
$ cmake ../ -DENABLE_MUSR=1 -DCMAKE_INSTALL_PREFIX=../exec
|
||||
$ cmake --build ./ --clean-first
|
||||
$ make install
|
||||
</pre>
|
||||
<p></p>
|
||||
Since <code>DKS</code> is installed in a non-standard path, a couple of additional small steps are required. This will be different for Linux compared to macOS.
|
||||
<p></p>
|
||||
For <strong>Linux</strong>:
|
||||
<p></p>
|
||||
add the <code>DKS</code> library path to <code>/etc/ld.so.conf.d/musrfit-x86_64.conf</code> and execute as super user
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ /sbin/ldconfig
|
||||
</pre>
|
||||
<p></p>
|
||||
For <strong>macOS</strong>:
|
||||
<p></p>
|
||||
add the <code>DKS</code> path to <code>$HOME/.profile</code>:
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
export DKS=$HOME/Applications/DKS/exec
|
||||
export LD_LIBRARY_PATH=$DKS/lib:$LD_LIBRARY_PATH
|
||||
|
||||
launchctl setenv DKS $DKS
|
||||
launchctl setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH
|
||||
</pre>
|
||||
<p></p>
|
||||
<h2 id="A_1.4_Installation_of_61musrfit_61_for_DKS"> 1.4 Installation of <code>musrfit</code> for DKS </h2>
|
||||
<p></p>
|
||||
Most of the installation steps are the same as described for <a href="MusrFitSetup.html"><code>musrfit</code></a> without GPU support.
|
||||
Here only the differences are explained. First checkout <code>musrfit</code>, then you will need to switch the working branch which is done by<pre class="bash">
|
||||
$ cd $HOME/Apps/musrfit
|
||||
$ git checkout dks6
|
||||
</pre>
|
||||
<p></p>
|
||||
<h3 id="A_1.4.1_Install_via_61_61automake_61_61"> 1.4.1 Install via <code><b>automake</b></code> </h3>
|
||||
<p></p>
|
||||
The configure script for <code>musrfit</code> has now a couple of more tags/options, which are: <dl>
|
||||
<dt> <code><b>--enable-dks</b></code> </dt><dd> by default this is set to <code><b>no</b></code>, hence if you want to have GPU support you need to enable it.
|
||||
</dd> <dt> <code><b>--with-cuda</b></code> </dt><dd> with this tag you tell the configure script where it can find CUDA
|
||||
</dd> <dt> <code><b>--with-opencl</b></code> </dt><dd> with this tag you tell the configure script where it can find OpenCL
|
||||
</dd> <dt> <code><b>--with-dks</b></code> </dt><dd> with this tag you tell the configure script where it can find <code>DKS</code>
|
||||
</dd></dl>
|
||||
<p></p>
|
||||
For a typical setup on a RHEL system it could look like this
|
||||
<pre class="bash">
|
||||
$ ./configure --enable-ASlibs --enable-BMWlibs --enable-NeXus --with-dks=$HOME/Apps/DKS/exec --enable-dks --prefix=$ROOTSYS
|
||||
</pre>
|
||||
whereas for macOS it would typically look like this
|
||||
<pre class="bash">
|
||||
$ ./configure --enable-ASlibs --enable-BMWlibs --enable-NeXus --with-dks=$HOME/Applications/DKS/exec --enable-dks --prefix=$ROOTSYS
|
||||
</pre>
|
||||
After
|
||||
<pre class="bash">
|
||||
$ make
|
||||
$ make install
|
||||
</pre>
|
||||
and updating the shared library lookup table (only needed for Linux)
|
||||
<pre class="bash">
|
||||
/sbin/ldconfig # as superuser / root
|
||||
</pre>
|
||||
you are done with the setup.
|
||||
<p></p>
|
||||
<h3 id="A_1.4.2_Install_via_61_61cmake_61_61"> 1.4.2 Install via <code><b>cmake</b></code> </h3>
|
||||
<p></p>
|
||||
There is on more configuration switch
|
||||
<p></p> <dl>
|
||||
<dt> <code>-Ddks=<value> </dt><dd> it allows to enable/disable =DKS</code> support. The default is <value>=1, i.e. <strong>enabled</strong>. To disable use <value>=0.
|
||||
</dd></dl>
|
||||
<p></p>
|
||||
For a typical setup on a RHEL system it could look like this
|
||||
<pre class="bash">
|
||||
$ cmake ../ -DCMAKE_INSTALL_PREFIX=$ROOTSYS -DASlibs=1 -DBMWlibs=1 -Dnexus=1
|
||||
</pre>
|
||||
whereas for macOS it would typically look like this
|
||||
<pre class="bash">
|
||||
$ cmake ../ -DCMAKE_INSTALL_PREFIX=$ROOTSYS -DASlibs=1 -DBMWlibs=1 -Dnexus=1
|
||||
</pre>
|
||||
<p></p>
|
||||
After
|
||||
<pre class="bash">
|
||||
$ cmake --build ./ --clean-first
|
||||
$ make install
|
||||
</pre>
|
||||
and updating the shared library lookup table (only needed for Linux)
|
||||
<pre class="bash">
|
||||
/sbin/ldconfig # as superuser / root
|
||||
</pre>
|
||||
you are done with the setup.
|
||||
<p></p>
|
||||
<h1 id="A_2_Setting_up_61_61musrfit_47DKS_61_61_for_a_AMD_Graphic_Card_40Radeon_R9_390X_41"> 2 Setting up <code><b>musrfit/DKS</b></code> for a AMD Graphic Card (Radeon R9 390X) </h1>
|
||||
<p></p>
|
||||
<h2 id="A_2.1_Driver_Installation_for_an_AMD_Graphic_Card_44_e.g._Radeon_R9_390X"> 2.1 Driver Installation for an AMD Graphic Card, e.g. Radeon R9 390X </h2>
|
||||
<p></p>
|
||||
This will depend slightly on the AMD Card and operating system. Here I will summaries how it was done on a RHEL (Linux) system using a Radeon R9 390X.
|
||||
<p></p>
|
||||
It is assumed that the Radeon R9 390X is already physically installed on your system. For now I only will discuss to set it up for a Linux based system. In order to check that your operating systems see the card, enter the following command in the terminal:
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ lspci | grep NVIDIA
|
||||
</pre>
|
||||
<p></p>
|
||||
On the response you should find something like
|
||||
<pre class="bash">
|
||||
84:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Hawaii XT / Grenada XT [Radeon R9 290X/390X] (rev 80)
|
||||
</pre>
|
||||
which means that the OS physically recognises your card.
|
||||
<p></p>
|
||||
For RHEL7.x the AMDGPU-PRO driver should be used. It can be downloaded from <a href="http://support.amd.com/en-us/kb-articles/Pages/AMDGPU-PRO-RedHat-Install.aspx">here</a>.
|
||||
Unpack the driver
|
||||
<pre class="bash">
|
||||
$ tar -Jxvf amdgpu-pro-17.10-414273.tar.xz
|
||||
$ cd amdgpu-pro-17.10-414273
|
||||
</pre>
|
||||
<p></p>
|
||||
Install the driver as root
|
||||
<pre class="bash">
|
||||
$ ./amdgpu-pro-install --compute -y
|
||||
</pre>
|
||||
<p></p>
|
||||
Here I assume that the AMD graphic card is only used for computation. You need to add the following command in order that the user 'blabla' (chance this to the appropriate user name) can access the GPU (otherwise only root works):
|
||||
<pre class="bash">
|
||||
$ /sbin/usermod -a -G video blabla
|
||||
</pre>
|
||||
<p></p>
|
||||
Reboot the machine.
|
||||
<p></p>
|
||||
<h2 id="A_2.2_AMD_APP_Software_Development_Kit_40SDK_41_to_enable_OpenCL_support"> 2.2 AMD APP Software Development Kit (SDK) to enable OpenCL support </h2>
|
||||
<p></p>
|
||||
The AMD APP Software Development Kit (SDK) is a complete development platform created by AMD to allow you to quickly and easily develop applications accelerated by AMD APP technology. The SDK provides samples, documentation, and other materials to quickly get you started leveraging accelerated compute using OpenCL or <code>C++ AMP</code> in your <code>C/C++</code> applications.
|
||||
<p></p>
|
||||
Download the AMD APP SDK 3.0 from <a href="http://developer.amd.com/tools-and-sdks/opencl-zone/amd-accelerated-parallel-processing-app-sdk/">here</a>.
|
||||
<p></p>
|
||||
Extract the installer
|
||||
<pre class="bash">
|
||||
$ tar -xvjf AMD-APP-SDKInstaller-v3.0.130.136-GA-linux64.tar.bz2
|
||||
</pre>
|
||||
<p></p>
|
||||
Run the installer
|
||||
<pre class="bash">
|
||||
$ ./AMD-APP-SDK-v3.0.130.136-GA-linux64.sh
|
||||
</pre>
|
||||
<p></p>
|
||||
This will install the AMD APP SDK to /opt/AMDAPPSDK-3.0/ where you can find the OpenCL include and library files, as well as documentation and sample code.
|
||||
The install guide for AMD OpenCL SDK can be found <a href="http://developer.amd.com/wordpress/media/2012/10/AMD_APP_SDK_InstallationNotes.pdf">here</a>.
|
||||
<p></p>
|
||||
<h2 id="A_2.3_Installation_of_DKS_and_61musrfit_61"> 2.3 Installation of DKS and <code>musrfit</code> </h2>
|
||||
<p></p>
|
||||
To install DKS and <code>musrfit</code> follow the instructions <a class="foswikiCurrentTopicLink" href="#DksInstall">here</a>.
|
||||
<p></p>
|
||||
<h1 id="A_3_Setting_up_61_61musrfit_47DKS_61_61_for_macOS_for_OpenCL_support"> 3 Setting up <code><b>musrfit/DKS</b></code> for macOS for OpenCL support </h1>
|
||||
<p></p>
|
||||
Since Apple is not providing an out-of-the-box OpenMP support on their macOS compiler framework (Xcode), typically <code>musrfit</code> is just running single threaded. Here DKS can help since it delivers OpenCL support which is present on macOS. Hence, if you would like to run <code>musrfit</code> multi-threaded the easiest way is to use DKS.
|
||||
<p></p>
|
||||
Since there is no graphic card involved, you do not need any graphic card driver of additional SDK. The only thing you need DKS and the proper <code>musrfit</code> version.
|
||||
<p></p>
|
||||
The installation instruction for DKS / <code>musrfit</code> can be found <a class="foswikiCurrentTopicLink" href="#DksInstall">here</a>.
|
||||
<p></p>
|
||||
-- <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a> - June 8, 2018</div>
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="patternInfo">This topic: MUSR<span class='foswikiSeparator'> > </span><a class="foswikiCurrentWebHomeLink" href="WebHome.html">WebHome</a><span class='foswikiSeparator'> > </span>MusrFitSetupDKS <br />
|
||||
Topic revision: <span class='patternRevInfo'>08 Jun 2018, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div id="patternBottomBar"><div id="patternBottomBarContents"><div id="patternWebBottomBar"><span class="foswikiRight"> <a href="http://foswiki.org/"><img src="../pub/System/ProjectLogos/foswiki-badge.png" alt="This site is powered by Foswiki" title="This site is powered by Foswiki" /></a></span>Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors. <br /> Ideas, requests, problems regarding PSI Wiki? <a href='mailto:thomas.buecklers@psi.ch?subject=PSI Wiki %20Feedback%20on%20MUSR.MusrFitSetupDKS'>Send feedback</a></div></div></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div><!-- /endWrap -->
|
||||
<p></p>
|
||||
<!-- Piwik -->
|
||||
|
||||
<noscript><p><img src="../piwik/piwikf832.gif?idsite=7" style="border:0" alt=""></p></noscript>
|
||||
<!-- End Piwik Tag -->
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitSetupDKS?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:56 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrGui?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:33 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrGui?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:51 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,12 +14,11 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrGui?t=1494785296" type="application/x-wiki" title="edit MusrGui" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrGui?t=1528465296" type="application/x-wiki" title="edit MusrGui" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref-->
|
||||
<style class='head TABLEPLUGIN_default' type="text/css" media="all">
|
||||
<base /><!--[if IE]></base><![endif]--><style class='head TABLEPLUGIN_default' type="text/css" media="all">
|
||||
body .foswikiTable {border-width:1px}
|
||||
body .foswikiTable .tableSortIcon img {padding-left:.3em; vertical-align:text-bottom}
|
||||
body .foswikiTable td {border-style:solid none; vertical-align:top}
|
||||
@ -33,6 +32,11 @@ body .foswikiTable tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-col
|
||||
body .foswikiTable tr.foswikiTableRowdataBg1 td {background-color:#f7f7f6}
|
||||
body .foswikiTable tr.foswikiTableRowdataBg1 td.foswikiSortedCol {background-color:#f0f0ee}
|
||||
</style><!--TABLEPLUGIN_default-->
|
||||
<link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<style class='head TABLEPLUGIN_specific' type="text/css" media="all">
|
||||
body .foswikiTable#tableMusrGui1 td {vertical-align:middle; vertical-align:top}
|
||||
body .foswikiTable#tableMusrGui1 td.foswikiTableCol0 {text-align:left}
|
||||
@ -50,11 +54,7 @@ body .foswikiTable#tableMusrGui1 th a:hover {color:#0066cc; background-color:#ff
|
||||
body .foswikiTable#tableMusrGui1 th.foswikiSortedCol {background-color:#eeeeee}
|
||||
body .foswikiTable#tableMusrGui1 tr.foswikiTableRowdataBg0 td {background-color:#ffffff}
|
||||
body .foswikiTable#tableMusrGui1 tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-color:#f5f5f5}
|
||||
</style><!--TABLEPLUGIN_specific-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
</style><!--TABLEPLUGIN_specific--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -135,18 +135,18 @@ body .foswikiTable#tableMusrGui1 tr.foswikiTableRowdataBg0 td.foswikiSortedCol {
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::TWISTY-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::TWISTY--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -531,5 +531,5 @@ Topic revision: <span class='patternRevInfo'>14 May 2017, <a href="https://intr
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrGui?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:38 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrGui?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:56 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrRoot?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:20 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrRoot?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:39 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,13 +14,11 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrRoot?t=1494785293" type="application/x-wiki" title="edit MusrRoot" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrRoot?t=1528465295" type="application/x-wiki" title="edit MusrRoot" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref-->
|
||||
<style class='head TABLEPLUGIN_default' type="text/css" media="all">
|
||||
body .foswikiTable {border-width:1px}
|
||||
@ -36,6 +34,9 @@ body .foswikiTable tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-col
|
||||
body .foswikiTable tr.foswikiTableRowdataBg1 td {background-color:#f7f7f6}
|
||||
body .foswikiTable tr.foswikiTableRowdataBg1 td.foswikiSortedCol {background-color:#f0f0ee}
|
||||
</style><!--TABLEPLUGIN_default-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN-->
|
||||
<style class='head TABLEPLUGIN_specific' type="text/css" media="all">
|
||||
body .foswikiTable#tableMusrRoot7 td {vertical-align:middle; vertical-align:top}
|
||||
body .foswikiTable#tableMusrRoot7 td.foswikiTableCol0 {text-align:left}
|
||||
@ -54,8 +55,7 @@ body .foswikiTable#tableMusrRoot7 th.foswikiSortedCol {background-color:#eeeeee}
|
||||
body .foswikiTable#tableMusrRoot7 tr.foswikiTableRowdataBg0 td {background-color:#ffffff}
|
||||
body .foswikiTable#tableMusrRoot7 tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-color:#f5f5f5}
|
||||
</style><!--TABLEPLUGIN_specific-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -138,16 +138,16 @@ body .foswikiTable#tableMusrRoot7 tr.foswikiTableRowdataBg0 td.foswikiSortedCol
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JQUERYPLUGIN::TWISTY-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::TWISTY--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -1125,5 +1125,5 @@ Topic revision: <span class='patternRevInfo'>29 Mar 2012, suter_a</span></div>
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrRoot?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:26 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrRoot?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:45 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/QuickStart?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:33 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/QuickStart?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:50 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,14 +14,14 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/QuickStart?t=1494785296" type="application/x-wiki" title="edit QuickStart" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/QuickStart?t=1528465296" type="application/x-wiki" title="edit QuickStart" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -101,15 +101,15 @@
|
||||
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::COMMENT--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -285,5 +285,5 @@ Topic revision: <span class='patternRevInfo'>10 Jul 2011, wojek</span></div>
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/QuickStart?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:33 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/QuickStart?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:50 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/TutorialSingleHisto?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:30 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/TutorialSingleHisto?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:47 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,7 +14,7 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/TutorialSingleHisto?t=1494785295" type="application/x-wiki" title="edit TutorialSingleHisto" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/TutorialSingleHisto?t=1528465296" type="application/x-wiki" title="edit TutorialSingleHisto" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
@ -32,6 +32,12 @@ body .foswikiTable tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-col
|
||||
body .foswikiTable tr.foswikiTableRowdataBg1 td {background-color:#f7f7f6}
|
||||
body .foswikiTable tr.foswikiTableRowdataBg1 td.foswikiSortedCol {background-color:#f0f0ee}
|
||||
</style><!--TABLEPLUGIN_default-->
|
||||
<link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<style class='head TABLEPLUGIN_specific' type="text/css" media="all">
|
||||
body .foswikiTable#tableTutorialSingleHisto1 td {vertical-align:middle; vertical-align:top}
|
||||
body .foswikiTable#tableTutorialSingleHisto1 td.foswikiTableCol0 {text-align:left}
|
||||
@ -49,13 +55,7 @@ body .foswikiTable#tableTutorialSingleHisto1 th a:hover {color:#0066cc; backgrou
|
||||
body .foswikiTable#tableTutorialSingleHisto1 th.foswikiSortedCol {background-color:#eeeeee}
|
||||
body .foswikiTable#tableTutorialSingleHisto1 tr.foswikiTableRowdataBg0 td {background-color:#ffffff}
|
||||
body .foswikiTable#tableTutorialSingleHisto1 tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-color:#f5f5f5}
|
||||
</style><!--TABLEPLUGIN_specific-->
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
</style><!--TABLEPLUGIN_specific--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -138,12 +138,12 @@ body .foswikiTable#tableTutorialSingleHisto1 tr.foswikiTableRowdataBg0 td.foswik
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JQUERYPLUGIN::TWISTY-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
@ -401,5 +401,5 @@ Topic revision: <span class='patternRevInfo'>02 Sep 2011, wojek</span></div>
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/TutorialSingleHisto?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:33 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/TutorialSingleHisto?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:41:50 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/WebHome?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:10 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/WebHome?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:42:27 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,14 +14,14 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/WebHome?t=1494785300" type="application/x-wiki" title="edit WebHome" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/WebHome?t=1528465299" type="application/x-wiki" title="edit WebHome" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -101,15 +101,15 @@
|
||||
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -125,9 +125,10 @@
|
||||
<li> <a href="CiteMusrFit.html">How to cite <code>musrfit</code>? <img class='smily' src='../pub/Main/SmiliesPluginPSI/yes.gif' alt='yes' title='yes' /> </a>
|
||||
</li> <li> <a href="TutorialSingleHisto.html">Single-histogram-fit tutorial for <code>musrfit</code> introducing the basic features of the programs and <code>msr</code> files</a>
|
||||
</li> <li> <a href="MusrFit.html">User manual of the μSR data analysis software <code>musrfit</code> </a>
|
||||
</li> <li> <a href="MusrFitSetup.html">Setting up <code>musrfit</code> on Different Platforms <img src="../pub/System/DocumentGraphics/new.png" alt="NEW" title="NEW" width="30" height="16" /> <strong><span class='foswikiRedFG'>ROOT6!</span></strong></a>
|
||||
</li> <li> <a href="MusrFitSetup.html">Setting up <code>musrfit</code> on Different Platforms</a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html">Setting up <code>musrfit</code> / <code>DKS</code>: high speed fitting with GPU's</a>
|
||||
</li> <li> <a href="QuickStart.html">Quick start page for <code>WKM</code> users</a>
|
||||
</li> <li> <a href="MusrGui.html">Documentation of <code>musrgui</code>/<code>musredit</code>—editors interfacing <code>musrfit</code> <img src="../pub/System/DocumentGraphics/updated.png" alt="UPDATED" title="UPDATED" width="55" height="16" /></a>
|
||||
</li> <li> <a href="MusrGui.html">Documentation of <code>musrgui</code>/<code>musredit</code>—editors interfacing <code>musrfit</code></a>
|
||||
</li> <li> <a href="Msr2Data.html">Documentation of <code>msr2data</code>—a program for automatically processing multiple musrfit <code>msr</code> files</a>
|
||||
</li> <li> <a href="MusrFit.html#Any2Many"><code>any2many</code>—a universal μSR-file-format converter</a>
|
||||
</li> <li> <a href="MusrRoot.html"><code>MusrRoot</code>: an extensible open file format for μSR</a>
|
||||
@ -138,12 +139,12 @@
|
||||
</li> <li> <a href="MusrFitAcknowledgements.html">Acknowledgements</a>
|
||||
</li></ul>
|
||||
<p></p>
|
||||
-- <a href="http://www.psi.ch/low-energy-muons/people">AS</a> & (<a href="http://www.fsf.org/register_form?referrer=8369">BMW</a>) - last update May 14, 2017</div>
|
||||
-- <a href="http://www.psi.ch/low-energy-muons/people">AS</a> & (<a href="http://www.fsf.org/register_form?referrer=8369">BMW</a>) - last update June 8, 2018</div>
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="patternInfo">This topic: MUSR<span class='foswikiSeparator'> > </span>WebHome <br />
|
||||
Topic revision: <span class='patternRevInfo'>14 May 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
Topic revision: <span class='patternRevInfo'>08 Jun 2018, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -161,5 +162,5 @@ Topic revision: <span class='patternRevInfo'>14 May 2017, <a href="https://intr
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/WebHome?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:12 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/WebHome?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 08 Jun 2018 13:42:28 GMT -->
|
||||
</html>
|
176
src/CMakeLists.txt
Normal file
176
src/CMakeLists.txt
Normal file
@ -0,0 +1,176 @@
|
||||
#--- add further sub-directories ----------------------------------------------
|
||||
add_subdirectory(classes)
|
||||
add_subdirectory(external)
|
||||
if (Qt5Core_FOUND)
|
||||
add_subdirectory(musredit_qt5)
|
||||
elseif (Qt4_FOUND)
|
||||
add_subdirectory(musredit)
|
||||
elseif (QT_FOUND)
|
||||
add_subdirectory(musrgui)
|
||||
endif (Qt5Core_FOUND)
|
||||
|
||||
#--- define the musrfit libs --------------------------------------------------
|
||||
set(MUSRFIT_LIBS ${MUSRFIT_LIBS} mud)
|
||||
set(MUSRFIT_LIBS ${MUSRFIT_LIBS} TMusrRunHeader)
|
||||
set(MUSRFIT_LIBS ${MUSRFIT_LIBS} TLemRunHeader)
|
||||
set(MUSRFIT_LIBS ${MUSRFIT_LIBS} Class_MuSR_PSI)
|
||||
if (nexus)
|
||||
set(MUSRFIT_LIBS ${MUSRFIT_LIBS} ${NEXUS_LIBRARY})
|
||||
set(MUSRFIT_LIBS ${MUSRFIT_LIBS} PNeXus)
|
||||
endif (nexus)
|
||||
set(MUSRFIT_LIBS ${MUSRFIT_LIBS} PMusr)
|
||||
|
||||
#--- start create git-revision.h ----------------------------------------------
|
||||
configure_file(
|
||||
${CMAKE_SOURCE_DIR}/cmake/configure_musrfit_version_file.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/configure_musrfit_version_file.cmake
|
||||
@ONLY
|
||||
)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/git-revision.h
|
||||
COMMAND ${CMAKE_COMMAND} -P
|
||||
${CMAKE_CURRENT_BINARY_DIR}/configure_musrfit_version_file.cmake
|
||||
DEPENDS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/configure_musrfit_version_file.cmake
|
||||
${CMAKE_SOURCE_DIR}/cmake/git-revision.h.in
|
||||
COMMENT "Configuring git-revision.h"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
add_custom_target(
|
||||
configure_musrfit_version ALL
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/git-revision.h
|
||||
)
|
||||
#--- end create git-revision.h ------------------------------------------------
|
||||
|
||||
#--- add all executables ------------------------------------------------------
|
||||
add_executable(any2many git-revision.h any2many.cpp)
|
||||
target_compile_options(any2many BEFORE PRIVATE "-DHAVE_CONFIG_H")
|
||||
target_include_directories(any2many
|
||||
BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${FFTW3_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/src>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/include>
|
||||
)
|
||||
target_link_libraries(any2many ${ROOT_LIBRARIES} ${MUSRFIT_LIBS})
|
||||
|
||||
add_executable(dump_header git-revision.h dump_header.cpp)
|
||||
target_compile_options(dump_header BEFORE PRIVATE "-DHAVE_CONFIG_H")
|
||||
target_include_directories(dump_header
|
||||
BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${FFTW3_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${NEXUS_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/src>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/external/MusrRoot>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/external/TLemRunHeader>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/external/MuSR_software/Class_MuSR_PSI/>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/external/mud/src>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/external/nexus>
|
||||
)
|
||||
target_link_libraries(dump_header ${ROOT_LIBRARIES} ${MUSRFIT_LIBS})
|
||||
|
||||
add_executable(msr2data git-revision.h msr2data.cpp)
|
||||
target_compile_options(msr2data BEFORE PRIVATE "-DHAVE_CONFIG_H")
|
||||
target_include_directories(msr2data
|
||||
BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${FFTW3_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/src>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/include>
|
||||
)
|
||||
target_link_libraries(msr2data ${ROOT_LIBRARIES} ${MUSRFIT_LIBS})
|
||||
|
||||
add_executable(msr2msr msr2msr.cpp)
|
||||
target_link_libraries(msr2msr ${ROOT_LIBRARIES})
|
||||
|
||||
add_executable(musrfit git-revision.h musrfit.cpp)
|
||||
target_compile_options(musrfit BEFORE PRIVATE "-DHAVE_CONFIG_H")
|
||||
target_include_directories(musrfit
|
||||
BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${FFTW3_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/src>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/include>
|
||||
)
|
||||
target_link_libraries(musrfit ${ROOT_LIBRARIES} ${MUSRFIT_LIBS})
|
||||
|
||||
add_executable(musrFT git-revision.h musrFT.cpp)
|
||||
target_compile_options(musrFT BEFORE PRIVATE "-DHAVE_CONFIG_H")
|
||||
target_include_directories(musrFT
|
||||
BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${FFTW3_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/src>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/include>
|
||||
)
|
||||
target_link_libraries(musrFT ${FFTW3_LIBRARY} ${ROOT_LIBRARIES} ${MUSRFIT_LIBS})
|
||||
|
||||
add_executable(musrRootValidation git-revision.h musrRootValidation.cpp)
|
||||
target_compile_options(musrRootValidation BEFORE PRIVATE "-DHAVE_CONFIG_H")
|
||||
target_include_directories(musrRootValidation
|
||||
BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${FFTW3_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/src>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/include>
|
||||
$<BUILD_INTERFACE:${LIBXML2_INCLUDE_DIR}>
|
||||
)
|
||||
target_link_libraries(musrRootValidation ${ROOT_LIBRARIES} ${MUSRFIT_LIBS} ${LIBXML2_LIBRARIES})
|
||||
|
||||
add_executable(musrt0 git-revision.h musrt0.cpp)
|
||||
target_compile_options(musrt0 BEFORE PRIVATE "-DHAVE_CONFIG_H")
|
||||
target_include_directories(musrt0
|
||||
BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${FFTW3_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/src>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/include>
|
||||
)
|
||||
target_link_libraries(musrt0 ${ROOT_LIBRARIES} ${MUSRFIT_LIBS})
|
||||
|
||||
add_executable(musrview git-revision.h musrview.cpp)
|
||||
target_compile_options(musrview BEFORE PRIVATE "-DHAVE_CONFIG_H")
|
||||
target_include_directories(musrview
|
||||
BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${FFTW3_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/src>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/include>
|
||||
)
|
||||
target_link_libraries(musrview ${FFTW3_LIBRARY} ${ROOT_LIBRARIES} ${MUSRFIT_LIBS})
|
||||
|
||||
add_executable(write_musrRoot_runHeader git-revision.h write_musrRoot_runHeader.cpp)
|
||||
target_compile_options(write_musrRoot_runHeader BEFORE PRIVATE "-DHAVE_CONFIG_H")
|
||||
target_include_directories(write_musrRoot_runHeader
|
||||
BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${FFTW3_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/src>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/include>
|
||||
$<BUILD_INTERFACE:${LIBXML2_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/external/MusrRoot>
|
||||
)
|
||||
target_link_libraries(write_musrRoot_runHeader ${ROOT_LIBRARIES} ${MUSRFIT_LIBS} ${LIBXML2_LIBRARIES})
|
||||
|
||||
#--- installation info --------------------------------------------------------
|
||||
install(
|
||||
TARGETS
|
||||
any2many
|
||||
dump_header
|
||||
msr2data
|
||||
msr2msr
|
||||
musrfit
|
||||
musrFT
|
||||
musrRootValidation
|
||||
musrt0
|
||||
musrview
|
||||
write_musrRoot_runHeader
|
||||
RUNTIME DESTINATION
|
||||
bin
|
||||
)
|
||||
|
||||
|
176
src/classes/CMakeLists.txt
Normal file
176
src/classes/CMakeLists.txt
Normal file
@ -0,0 +1,176 @@
|
||||
#--- build the PMusr and PUserFcnBase libs ------------------------------------
|
||||
|
||||
#--- generate necessary dictionaries ------------------------------------------
|
||||
set(MUSRFIT_INC ${CMAKE_SOURCE_DIR}/src/include)
|
||||
|
||||
root_generate_dictionary(
|
||||
PFourierCanvasDict
|
||||
-I${FFTW3_INCLUDE_DIR} ${MUSRFIT_INC}/PFourierCanvas.h
|
||||
LINKDEF ${MUSRFIT_INC}/PFourierCanvasLinkDef.h
|
||||
)
|
||||
root_generate_dictionary(
|
||||
PMusrCanvasDict
|
||||
-I${FFTW3_INCLUDE_DIR} ${MUSRFIT_INC}/PMusrCanvas.h
|
||||
LINKDEF ${MUSRFIT_INC}/PMusrCanvasLinkDef.h
|
||||
)
|
||||
root_generate_dictionary(
|
||||
PMusrT0Dict
|
||||
-I${FFTW3_INCLUDE_DIR} ${MUSRFIT_INC}/PMusrT0.h
|
||||
LINKDEF ${MUSRFIT_INC}/PMusrT0LinkDef.h
|
||||
)
|
||||
root_generate_dictionary(
|
||||
PStartupHandlerDict
|
||||
-I${FFTW3_INCLUDE_DIR} ${MUSRFIT_INC}/PStartupHandler.h
|
||||
LINKDEF ${MUSRFIT_INC}/PStartupHandlerLinkDef.h
|
||||
)
|
||||
root_generate_dictionary(
|
||||
PUserFcnBaseDict
|
||||
-I${FFTW3_INCLUDE_DIR} ${MUSRFIT_INC}/PUserFcnBase.h
|
||||
LINKDEF ${MUSRFIT_INC}/PUserFcnBaseLinkDef.h
|
||||
)
|
||||
|
||||
#--- create pkg-config info ---------------------------------------------------
|
||||
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||
set(exec_prefix "\$\{prefix\}")
|
||||
set(libdir "\$\{exec_prefix\}/lib")
|
||||
set(includedir "\$\{prefix\}/include")
|
||||
set(MUSR_VERSION "1.3.0")
|
||||
set(MUSR_LIBRARY_NAME "PMusr")
|
||||
configure_file("PMusr.pc.in" "PMusr.pc" @ONLY)
|
||||
set(USERFCN_LIBRARY_NAME "PUserFcnBase")
|
||||
configure_file("PUserFcnBase.pc.in" "PUserFcnBase.pc" @ONLY)
|
||||
|
||||
#--- lib creation -------------------------------------------------------------
|
||||
add_library(PMusr SHARED
|
||||
PFitter.cpp
|
||||
PFitterFcn.cpp
|
||||
PFourier.cpp
|
||||
PFourierCanvas.cpp
|
||||
PFourierCanvasDict.cxx
|
||||
PMusrCanvas.cpp
|
||||
PMusrCanvasDict.cxx
|
||||
PFunction.cpp
|
||||
PFunctionHandler.cpp
|
||||
PMsr2Data.cpp
|
||||
PMsrHandler.cpp
|
||||
PMusrCanvas.cpp
|
||||
PMusrCanvasDict.cxx
|
||||
PMusr.cpp
|
||||
PMusrT0.cpp
|
||||
PMusrT0Dict.cxx
|
||||
PPrepFourier.cpp
|
||||
PRunAsymmetry.cpp
|
||||
PRunAsymmetryRRF.cpp
|
||||
PRunBase.cpp
|
||||
PRunDataHandler.cpp
|
||||
PRunListCollection.cpp
|
||||
PRunMuMinus.cpp
|
||||
PRunNonMusr.cpp
|
||||
PRunSingleHisto.cpp
|
||||
PRunSingleHistoRRF.cpp
|
||||
PStartupHandler.cpp
|
||||
PStartupHandlerDict.cxx
|
||||
PTheory.cpp
|
||||
)
|
||||
#--- make sure that the include directory is found ----------------------------
|
||||
target_include_directories(
|
||||
PMusr BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${FFTW3_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${NEXUS_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${MUSRFIT_INC}>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/external/MusrRoot>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/external/TLemRunHeader>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/external/MuSR_software/Class_MuSR_PSI>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/external/mud/src>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/external/nexus>
|
||||
)
|
||||
|
||||
add_library(PUserFcnBase SHARED
|
||||
PUserFcnBase.cpp
|
||||
PUserFcnBaseDict.cxx
|
||||
)
|
||||
|
||||
#--- set target properties, e.g. version --------------------------------------
|
||||
set_target_properties(PMusr
|
||||
PROPERTIES
|
||||
VERSION ${MUSR_VERSION}
|
||||
)
|
||||
set_target_properties(PUserFcnBase
|
||||
PROPERTIES
|
||||
VERSION ${MUSR_VERSION}
|
||||
)
|
||||
#--- make sure that the include directory is found ----------------------------
|
||||
target_include_directories(
|
||||
PUserFcnBase BEFORE PRIVATE $<BUILD_INTERFACE:${MUSRFIT_INC}>
|
||||
)
|
||||
|
||||
#--- add OpenMP compile options if needed -------------------------------------
|
||||
if (OpenMP_FOUND)
|
||||
target_compile_options(PMusr PUBLIC ${OpenMP_CXX_FLAGS})
|
||||
endif (OpenMP_FOUND)
|
||||
|
||||
#--- add library dependencies -------------------------------------------------
|
||||
set(DependOnLibs ${ROOT_LIBARIES})
|
||||
set(DependOnLibs ${DependOnLibs} ${FFTW3_LIBRARY})
|
||||
set(DependOnLibs ${DependOnLibs} PUserFcnBase)
|
||||
set(DependOnLibs ${DependOnLibs} mud)
|
||||
set(DependOnLibs ${DependOnLibs} TMusrRunHeader)
|
||||
set(DependOnLibs ${DependOnLibs} TLemRunHeader)
|
||||
set(DependOnLibs ${DependOnLibs} Class_MuSR_PSI)
|
||||
if (nexus)
|
||||
set(DependOnLibs ${DependOnLibs} ${LIBNEXUS_LIBRARY})
|
||||
set(DependOnLibs ${DependOnLibs} PNeXus)
|
||||
endif (nexus)
|
||||
if (OpenMP_FOUND)
|
||||
if (OpenMP_CXX_LIBRARIES)
|
||||
set(DependOnLibs ${DependOnLibs} ${OpenMP_CXX_LIBRARIES})
|
||||
else (OpenMP_CXX_LIBRARIES)
|
||||
set(DependOnLibs ${DependOnLibs} ${OpenMP_CXX_FLAGS}) # for older cmake OpenMP_CXX_LIBRARIES is not defined
|
||||
endif (OpenMP_CXX_LIBRARIES)
|
||||
endif (OpenMP_FOUND)
|
||||
|
||||
target_link_libraries(PUserFcnBase ${ROOT_LIBRARIES})
|
||||
target_link_libraries(PMusr ${DependOnLibs})
|
||||
|
||||
#--- install PUserFcnBase solib -----------------------------------------------
|
||||
install(TARGETS PUserFcnBase DESTINATION lib)
|
||||
|
||||
#--- install PMusr solib ------------------------------------------------------
|
||||
install(TARGETS PMusr DESTINATION lib)
|
||||
|
||||
#--- install root pcm's and rootmaps ------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/libPFourierCanvasDict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPFourierCanvasDict.rootmap
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPMusrCanvasDict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPMusrCanvasDict.rootmap
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPMusrT0Dict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPMusrT0Dict.rootmap
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPStartupHandlerDict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPStartupHandlerDict.rootmap
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPUserFcnBaseDict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPUserFcnBaseDict.rootmap
|
||||
DESTINATION lib
|
||||
)
|
||||
|
||||
#--- install headers ----------------------------------------------------------
|
||||
#--- only install headers needed for classes with dictionary
|
||||
install(
|
||||
FILES ${MUSRFIT_INC}/PFourierCanvas.h
|
||||
${MUSRFIT_INC}/PFourier.h
|
||||
${MUSRFIT_INC}/PMusrCanvas.h
|
||||
${MUSRFIT_INC}/PMusr.h
|
||||
${MUSRFIT_INC}/PMusrT0.h
|
||||
${MUSRFIT_INC}/PRunListCollection.h
|
||||
${MUSRFIT_INC}/PStartupHandler.h
|
||||
${MUSRFIT_INC}/PUserFcnBase.h
|
||||
DESTINATION include
|
||||
)
|
||||
|
||||
#--- install pkg-config info --------------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/PUserFcnBase.pc
|
||||
${CMAKE_CURRENT_BINARY_DIR}/PMusr.pc
|
||||
DESTINATION lib/pkgconfig
|
||||
)
|
||||
|
@ -2607,7 +2607,7 @@ void PMsrHandler::SetMsrBkgRangeEntry(UInt_t runNo, UInt_t idx, Int_t bin)
|
||||
Int_t PMsrHandler::ParameterInUse(UInt_t paramNo)
|
||||
{
|
||||
// check that paramNo is within acceptable range
|
||||
if ((paramNo < 0) || (paramNo >= fParam.size()))
|
||||
if (paramNo >= fParam.size())
|
||||
return -1;
|
||||
|
||||
return fParamInUse[paramNo];
|
||||
@ -6164,10 +6164,10 @@ UInt_t PMsrHandler::LastSignificant(Double_t dval, UInt_t precLimit)
|
||||
}
|
||||
|
||||
// find last significant digit
|
||||
for (UInt_t i=strlen(str)-1; i>=0; i--) {
|
||||
for (Int_t i=strlen(str)-1; i>=0; i--) {
|
||||
if (str[i] != '0') {
|
||||
if ((i-decimalPoint) < precLimit)
|
||||
lastSignificant = i-decimalPoint;
|
||||
if (((UInt_t)i-decimalPoint) < precLimit)
|
||||
lastSignificant = (UInt_t)i-decimalPoint;
|
||||
else
|
||||
lastSignificant = precLimit;
|
||||
break;
|
||||
|
@ -6475,10 +6475,10 @@ UInt_t PMusrCanvas::GetNeededAccuracy(PMsrParamStructure param)
|
||||
}
|
||||
|
||||
// find last significant digit
|
||||
for (UInt_t i=strlen(str)-1; i>=0; i--) {
|
||||
for (Int_t i=strlen(str)-1; i>=0; i--) {
|
||||
if (str[i] != '0') {
|
||||
if ((i-decimalPoint) < precLimit)
|
||||
accuracy = i-decimalPoint;
|
||||
if (((UInt_t)i-decimalPoint) < precLimit)
|
||||
accuracy = (UInt_t)i-decimalPoint;
|
||||
else
|
||||
accuracy = precLimit;
|
||||
break;
|
||||
|
@ -574,7 +574,7 @@ Bool_t PRunAsymmetry::PrepareData()
|
||||
addRunSize = addRunData->GetDataBin(forwardHistoNo[k])->size();
|
||||
for (UInt_t j=0; j<addRunData->GetDataBin(forwardHistoNo[k])->size(); j++) { // loop over the bin indices
|
||||
// make sure that the index stays in the proper range
|
||||
if ((j+(Int_t)fAddT0s[i-1][2*k]-(Int_t)fT0s[2*k] >= 0) && (j+(Int_t)fAddT0s[i-1][2*k]-(Int_t)fT0s[2*k] < addRunSize)) {
|
||||
if (((Int_t)j+(Int_t)fAddT0s[i-1][2*k]-(Int_t)fT0s[2*k] >= 0) && (j+(Int_t)fAddT0s[i-1][2*k]-(Int_t)fT0s[2*k] < addRunSize)) {
|
||||
forward[k][j] += addRunData->GetDataBin(forwardHistoNo[k])->at(j+(Int_t)fAddT0s[i-1][2*k]-(Int_t)fT0s[2*k]);
|
||||
}
|
||||
}
|
||||
@ -585,7 +585,7 @@ Bool_t PRunAsymmetry::PrepareData()
|
||||
addRunSize = addRunData->GetDataBin(backwardHistoNo[k])->size();
|
||||
for (UInt_t j=0; j<addRunData->GetDataBin(backwardHistoNo[k])->size(); j++) { // loop over the bin indices
|
||||
// make sure that the index stays in the proper range
|
||||
if ((j+(Int_t)fAddT0s[i-1][2*k+1]-(Int_t)fT0s[2*k+1] >= 0) && (j+(Int_t)fAddT0s[i-1][2*k+1]-(Int_t)fT0s[2*k+1] < addRunSize)) {
|
||||
if (((Int_t)j+(Int_t)fAddT0s[i-1][2*k+1]-(Int_t)fT0s[2*k+1] >= 0) && (j+(Int_t)fAddT0s[i-1][2*k+1]-(Int_t)fT0s[2*k+1] < addRunSize)) {
|
||||
backward[k][j] += addRunData->GetDataBin(backwardHistoNo[k])->at(j+(Int_t)fAddT0s[i-1][2*k+1]-(Int_t)fT0s[2*k+1]);
|
||||
}
|
||||
}
|
||||
|
@ -566,7 +566,7 @@ Bool_t PRunAsymmetryRRF::PrepareData()
|
||||
addRunSize = addRunData->GetDataBin(forwardHistoNo[k])->size();
|
||||
for (UInt_t j=0; j<addRunData->GetDataBin(forwardHistoNo[k])->size(); j++) { // loop over the bin indices
|
||||
// make sure that the index stays in the proper range
|
||||
if ((j+(Int_t)fAddT0s[i-1][2*k]-(Int_t)fT0s[2*k] >= 0) && (j+(Int_t)fAddT0s[i-1][2*k]-(Int_t)fT0s[2*k] < addRunSize)) {
|
||||
if (((Int_t)j+(Int_t)fAddT0s[i-1][2*k]-(Int_t)fT0s[2*k] >= 0) && (j+(Int_t)fAddT0s[i-1][2*k]-(Int_t)fT0s[2*k] < addRunSize)) {
|
||||
forward[k][j] += addRunData->GetDataBin(forwardHistoNo[k])->at(j+(Int_t)fAddT0s[i-1][2*k]-(Int_t)fT0s[2*k]);
|
||||
}
|
||||
}
|
||||
@ -577,7 +577,7 @@ Bool_t PRunAsymmetryRRF::PrepareData()
|
||||
addRunSize = addRunData->GetDataBin(backwardHistoNo[k])->size();
|
||||
for (UInt_t j=0; j<addRunData->GetDataBin(backwardHistoNo[k])->size(); j++) { // loop over the bin indices
|
||||
// make sure that the index stays in the proper range
|
||||
if ((j+(Int_t)fAddT0s[i-1][2*k+1]-(Int_t)fT0s[2*k+1] >= 0) && (j+(Int_t)fAddT0s[i-1][2*k+1]-(Int_t)fT0s[2*k+1] < addRunSize)) {
|
||||
if (((Int_t)j+(Int_t)fAddT0s[i-1][2*k+1]-(Int_t)fT0s[2*k+1] >= 0) && (j+(Int_t)fAddT0s[i-1][2*k+1]-(Int_t)fT0s[2*k+1] < addRunSize)) {
|
||||
backward[k][j] += addRunData->GetDataBin(backwardHistoNo[k])->at(j+(Int_t)fAddT0s[i-1][2*k+1]-(Int_t)fT0s[2*k+1]);
|
||||
}
|
||||
}
|
||||
@ -597,7 +597,7 @@ Bool_t PRunAsymmetryRRF::PrepareData()
|
||||
for (UInt_t i=1; i<forwardHistoNo.size(); i++) { // loop over the groupings
|
||||
for (UInt_t j=0; j<runData->GetDataBin(forwardHistoNo[i])->size(); j++) { // loop over the bin indices
|
||||
// make sure that the index stays within proper range
|
||||
if ((j+fT0s[2*i]-fT0s[0] >= 0) && (j+fT0s[2*i]-fT0s[0] < runData->GetDataBin(forwardHistoNo[i])->size())) {
|
||||
if (((Int_t)j+fT0s[2*i]-fT0s[0] >= 0) && (j+fT0s[2*i]-fT0s[0] < runData->GetDataBin(forwardHistoNo[i])->size())) {
|
||||
fForward[j] += forward[i][j+(Int_t)fT0s[2*i]-(Int_t)fT0s[0]];
|
||||
}
|
||||
}
|
||||
@ -771,8 +771,7 @@ Bool_t PRunAsymmetryRRF::SubtractEstimatedBkg()
|
||||
}
|
||||
|
||||
// check if start is within histogram bounds
|
||||
if ((start[0] < 0) || (start[0] >= fForward.size()) ||
|
||||
(start[1] < 0) || (start[1] >= fBackward.size())) {
|
||||
if ((start[0] >= fForward.size()) || (start[1] >= fBackward.size())) {
|
||||
cerr << endl << ">> PRunAsymmetryRRF::SubtractEstimatedBkg(): **ERROR** background bin values out of bound!";
|
||||
cerr << endl << ">> histo lengths (f/b) = (" << fForward.size() << "/" << fBackward.size() << ").";
|
||||
cerr << endl << ">> background start (f/b) = (" << start[0] << "/" << start[1] << ").";
|
||||
@ -780,8 +779,7 @@ Bool_t PRunAsymmetryRRF::SubtractEstimatedBkg()
|
||||
}
|
||||
|
||||
// check if end is within histogram bounds
|
||||
if ((end[0] < 0) || (end[0] >= fForward.size()) ||
|
||||
(end[1] < 0) || (end[1] >= fBackward.size())) {
|
||||
if ((end[0] >= fForward.size()) || (end[1] >= fBackward.size())) {
|
||||
cerr << endl << ">> PRunAsymmetryRRF::SubtractEstimatedBkg(): **ERROR** background bin values out of bound!";
|
||||
cerr << endl << ">> histo lengths (f/b) = (" << fForward.size() << "/" << fBackward.size() << ").";
|
||||
cerr << endl << ">> background end (f/b) = (" << end[0] << "/" << end[1] << ").";
|
||||
|
@ -34,11 +34,8 @@
|
||||
#include <TString.h>
|
||||
#include <TObjArray.h>
|
||||
#include <TObjString.h>
|
||||
//#include <TFile.h>
|
||||
#include <TFolder.h>
|
||||
|
||||
#include "TLemRunHeader.h"
|
||||
|
||||
#include "PRunBase.h"
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
@ -78,7 +75,7 @@ PRunBase::PRunBase(PMsrHandler *msrInfo, PRunDataHandler *rawData, UInt_t runNo,
|
||||
fValid = true;
|
||||
|
||||
fRunNo = static_cast<Int_t>(runNo);
|
||||
if ((runNo < 0) || (runNo > fMsrInfo->GetMsrRunList()->size())) {
|
||||
if (runNo > fMsrInfo->GetMsrRunList()->size()) {
|
||||
fRunInfo = 0;
|
||||
return;
|
||||
}
|
||||
|
@ -788,7 +788,7 @@ PRunData* PRunListCollection::GetSingleHisto(UInt_t index, EDataSwitch tag)
|
||||
|
||||
switch (tag) {
|
||||
case kIndex:
|
||||
if ((index < 0) || (index >= fRunSingleHistoList.size())) {
|
||||
if (index >= fRunSingleHistoList.size()) {
|
||||
cerr << endl << ">> PRunListCollection::GetSingleHisto(): **ERROR** index = " << index << " out of bounds";
|
||||
cerr << endl;
|
||||
return 0;
|
||||
@ -831,7 +831,7 @@ PRunData* PRunListCollection::GetSingleHistoRRF(UInt_t index, EDataSwitch tag)
|
||||
|
||||
switch (tag) {
|
||||
case kIndex:
|
||||
if ((index < 0) || (index >= fRunSingleHistoRRFList.size())) {
|
||||
if (index >= fRunSingleHistoRRFList.size()) {
|
||||
cerr << endl << ">> PRunListCollection::GetSingleHistoRRF(): **ERROR** index = " << index << " out of bounds";
|
||||
cerr << endl;
|
||||
return 0;
|
||||
@ -874,7 +874,7 @@ PRunData* PRunListCollection::GetAsymmetry(UInt_t index, EDataSwitch tag)
|
||||
|
||||
switch (tag) {
|
||||
case kIndex: // called from musrfit when dumping the data
|
||||
if ((index < 0) || (index > fRunAsymmetryList.size())) {
|
||||
if (index > fRunAsymmetryList.size()) {
|
||||
cerr << endl << ">> PRunListCollection::GetAsymmetry(): **ERROR** index = " << index << " out of bounds";
|
||||
cerr << endl;
|
||||
return 0;
|
||||
@ -917,7 +917,7 @@ PRunData* PRunListCollection::GetAsymmetryRRF(UInt_t index, EDataSwitch tag)
|
||||
|
||||
switch (tag) {
|
||||
case kIndex: // called from musrfit when dumping the data
|
||||
if ((index < 0) || (index > fRunAsymmetryRRFList.size())) {
|
||||
if (index > fRunAsymmetryRRFList.size()) {
|
||||
cerr << endl << ">> PRunListCollection::GetAsymmetryRRF(): **ERROR** index = " << index << " out of bounds";
|
||||
cerr << endl;
|
||||
return 0;
|
||||
@ -960,7 +960,7 @@ PRunData* PRunListCollection::GetMuMinus(UInt_t index, EDataSwitch tag)
|
||||
|
||||
switch (tag) {
|
||||
case kIndex:
|
||||
if ((index < 0) || (index > fRunMuMinusList.size())) {
|
||||
if (index > fRunMuMinusList.size()) {
|
||||
cerr << endl << ">> PRunListCollection::GetMuMinus(): **ERROR** index = " << index << " out of bounds";
|
||||
cerr << endl;
|
||||
return 0;
|
||||
@ -1002,7 +1002,7 @@ PRunData* PRunListCollection::GetNonMusr(UInt_t index, EDataSwitch tag)
|
||||
|
||||
switch (tag) {
|
||||
case kIndex:
|
||||
if ((index < 0) || (index > fRunNonMusrList.size())) {
|
||||
if (index > fRunNonMusrList.size()) {
|
||||
cerr << endl << ">> PRunListCollection::GetNonMusr(): **ERROR** index = " << index << " out of bounds";
|
||||
cerr << endl;
|
||||
return 0;
|
||||
|
@ -27,6 +27,14 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_GOMP
|
||||
#include <omp.h>
|
||||
#endif
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
@ -512,7 +520,7 @@ Bool_t PRunMuMinus::PrepareData()
|
||||
addRunSize = addRunData->GetDataBin(histoNo[k])->size();
|
||||
for (UInt_t j=0; j<addRunData->GetDataBin(histoNo[k])->size(); j++) { // loop over the bin indices
|
||||
// make sure that the index stays in the proper range
|
||||
if ((j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k] >= 0) && (j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k] < addRunSize)) {
|
||||
if (((Int_t)j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k] >= 0) && (j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k] < addRunSize)) {
|
||||
forward[k][j] += addRunData->GetDataBin(histoNo[k])->at(j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k]);
|
||||
}
|
||||
}
|
||||
@ -530,7 +538,7 @@ Bool_t PRunMuMinus::PrepareData()
|
||||
for (UInt_t i=1; i<histoNo.size(); i++) { // loop over the groupings
|
||||
for (UInt_t j=0; j<runData->GetDataBin(histoNo[i])->size(); j++) { // loop over the bin indices
|
||||
// make sure that the index stays within proper range
|
||||
if ((j+fT0s[i]-fT0s[0] >= 0) && (j+fT0s[i]-fT0s[0] < runData->GetDataBin(histoNo[i])->size())) {
|
||||
if (((Int_t)j+fT0s[i]-fT0s[0] >= 0) && (j+fT0s[i]-fT0s[0] < runData->GetDataBin(histoNo[i])->size())) {
|
||||
fForward[j] += forward[i][j+(Int_t)fT0s[i]-(Int_t)fT0s[0]];
|
||||
}
|
||||
}
|
||||
|
@ -41,6 +41,8 @@ PRunNonMusr::PRunNonMusr() : PRunBase()
|
||||
{
|
||||
fNoOfFitBins = 0;
|
||||
fPacking = 1;
|
||||
fStartTimeBin = 0;
|
||||
fEndTimeBin = 0;
|
||||
|
||||
fHandleTag = kEmpty;
|
||||
|
||||
@ -105,14 +107,12 @@ Double_t PRunNonMusr::CalcChiSquare(const std::vector<Double_t>& par)
|
||||
}
|
||||
|
||||
// calculate chi square
|
||||
Double_t x;
|
||||
for (UInt_t i=0; i<fData.GetValue()->size(); i++) {
|
||||
Double_t x(1.0);
|
||||
for (UInt_t i=fStartTimeBin; i<=fEndTimeBin; i++) {
|
||||
x = fData.GetX()->at(i);
|
||||
if ((x>=fFitStartTime) && (x<=fFitEndTime)) {
|
||||
diff = fData.GetValue()->at(i) - fTheory->Func(x, par, fFuncValues);
|
||||
chisq += diff*diff / (fData.GetError()->at(i)*fData.GetError()->at(i));
|
||||
}
|
||||
}
|
||||
|
||||
return chisq;
|
||||
}
|
||||
@ -279,6 +279,17 @@ Bool_t PRunNonMusr::PrepareFitData()
|
||||
fNoOfFitBins++;
|
||||
}
|
||||
|
||||
// get start/end bin
|
||||
const PDoubleVector *xx = fData.GetX();
|
||||
fStartTimeBin = 0;
|
||||
fEndTimeBin = xx->size()-1;
|
||||
for (UInt_t i=0; i<xx->size(); i++) {
|
||||
if (xx->at(i) < fFitStartTime)
|
||||
fStartTimeBin = i;
|
||||
if (xx->at(i) < fFitEndTime)
|
||||
fEndTimeBin = i;
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
|
@ -764,7 +764,7 @@ Bool_t PRunSingleHisto::PrepareData()
|
||||
addRunSize = addRunData->GetDataBin(histoNo[k])->size();
|
||||
for (UInt_t j=0; j<addRunData->GetDataBin(histoNo[k])->size(); j++) { // loop over the bin indices
|
||||
// make sure that the index stays in the proper range
|
||||
if ((j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k] >= 0) && (j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k] < addRunSize)) {
|
||||
if (((Int_t)j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k] >= 0) && (j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k] < addRunSize)) {
|
||||
forward[k][j] += addRunData->GetDataBin(histoNo[k])->at(j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k]);
|
||||
}
|
||||
}
|
||||
@ -782,7 +782,7 @@ Bool_t PRunSingleHisto::PrepareData()
|
||||
for (UInt_t i=1; i<histoNo.size(); i++) { // loop over the groupings
|
||||
for (UInt_t j=0; j<runData->GetDataBin(histoNo[i])->size(); j++) { // loop over the bin indices
|
||||
// make sure that the index stays within proper range
|
||||
if ((j+fT0s[i]-fT0s[0] >= 0) && (j+fT0s[i]-fT0s[0] < runData->GetDataBin(histoNo[i])->size())) {
|
||||
if (((Int_t)j+fT0s[i]-fT0s[0] >= 0) && (j+fT0s[i]-fT0s[0] < runData->GetDataBin(histoNo[i])->size())) {
|
||||
fForward[j] += forward[i][j+(Int_t)fT0s[i]-(Int_t)fT0s[0]];
|
||||
}
|
||||
}
|
||||
@ -1766,7 +1766,7 @@ Bool_t PRunSingleHisto::EstimateBkg(UInt_t histoNo)
|
||||
}
|
||||
|
||||
// check if start is within histogram bounds
|
||||
if ((start < 0) || (start >= fForward.size())) {
|
||||
if (start >= fForward.size()) {
|
||||
cerr << endl << ">> PRunSingleHisto::EstimatBkg(): **ERROR** background bin values out of bound!";
|
||||
cerr << endl << ">> histo lengths = " << fForward.size();
|
||||
cerr << endl << ">> background start = " << start;
|
||||
@ -1775,7 +1775,7 @@ Bool_t PRunSingleHisto::EstimateBkg(UInt_t histoNo)
|
||||
}
|
||||
|
||||
// check if end is within histogram bounds
|
||||
if ((end < 0) || (end >= fForward.size())) {
|
||||
if (end >= fForward.size()) {
|
||||
cerr << endl << ">> PRunSingleHisto::EstimatBkg(): **ERROR** background bin values out of bound!";
|
||||
cerr << endl << ">> histo lengths = " << fForward.size();
|
||||
cerr << endl << ">> background end = " << end;
|
||||
|
@ -493,7 +493,7 @@ Bool_t PRunSingleHistoRRF::PrepareData()
|
||||
addRunSize = addRunData->GetDataBin(histoNo[k])->size();
|
||||
for (UInt_t j=0; j<addRunData->GetDataBin(histoNo[k])->size(); j++) { // loop over the bin indices
|
||||
// make sure that the index stays in the proper range
|
||||
if ((j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k] >= 0) && (j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k] < addRunSize)) {
|
||||
if (((Int_t)j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k] >= 0) && (j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k] < addRunSize)) {
|
||||
forward[k][j] += addRunData->GetDataBin(histoNo[k])->at(j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k]);
|
||||
}
|
||||
}
|
||||
@ -511,7 +511,7 @@ Bool_t PRunSingleHistoRRF::PrepareData()
|
||||
for (UInt_t i=1; i<histoNo.size(); i++) { // loop over the groupings
|
||||
for (UInt_t j=0; j<runData->GetDataBin(histoNo[i])->size(); j++) { // loop over the bin indices
|
||||
// make sure that the index stays within proper range
|
||||
if ((j+fT0s[i]-fT0s[0] >= 0) && (j+fT0s[i]-fT0s[0] < runData->GetDataBin(histoNo[i])->size())) {
|
||||
if (((Int_t)j+fT0s[i]-fT0s[0] >= 0) && (j+fT0s[i]-fT0s[0] < runData->GetDataBin(histoNo[i])->size())) {
|
||||
fForward[j] += forward[i][j+(Int_t)fT0s[i]-(Int_t)fT0s[0]];
|
||||
}
|
||||
}
|
||||
@ -1173,7 +1173,7 @@ Bool_t PRunSingleHistoRRF::EstimateBkg(UInt_t histoNo)
|
||||
}
|
||||
|
||||
// check if start is within histogram bounds
|
||||
if ((start < 0) || (start >= fForward.size())) {
|
||||
if (start >= fForward.size()) {
|
||||
cerr << endl << ">> PRunSingleHistoRRF::EstimatBkg(): **ERROR** background bin values out of bound!";
|
||||
cerr << endl << ">> histo lengths = " << fForward.size();
|
||||
cerr << endl << ">> background start = " << start;
|
||||
@ -1182,7 +1182,7 @@ Bool_t PRunSingleHistoRRF::EstimateBkg(UInt_t histoNo)
|
||||
}
|
||||
|
||||
// check if end is within histogram bounds
|
||||
if ((end < 0) || (end >= fForward.size())) {
|
||||
if (end >= fForward.size()) {
|
||||
cerr << endl << ">> PRunSingleHistoRRF::EstimatBkg(): **ERROR** background bin values out of bound!";
|
||||
cerr << endl << ">> histo lengths = " << fForward.size();
|
||||
cerr << endl << ">> background end = " << end;
|
||||
|
42
src/external/BMWtools/BMWIntegrator.cpp
vendored
42
src/external/BMWtools/BMWIntegrator.cpp
vendored
@ -31,6 +31,7 @@
|
||||
#include "cuba.h"
|
||||
|
||||
#define USERDATA NULL
|
||||
#define SPIN NULL
|
||||
#define SEED 0
|
||||
#define STATEFILE NULL
|
||||
|
||||
@ -45,6 +46,7 @@ std::vector<double> TDWaveGapIntegralCuhre::fPar;
|
||||
double TDWaveGapIntegralCuhre::IntegrateFunc()
|
||||
{
|
||||
const unsigned int NCOMP(1);
|
||||
const unsigned int NVEC(1);
|
||||
const double EPSREL (1e-4);
|
||||
const double EPSABS (1e-6);
|
||||
const unsigned int VERBOSE (0);
|
||||
@ -57,9 +59,9 @@ double TDWaveGapIntegralCuhre::IntegrateFunc()
|
||||
int nregions, neval, fail;
|
||||
double integral[NCOMP], error[NCOMP], prob[NCOMP];
|
||||
|
||||
Cuhre(fNDim, NCOMP, Integrand, USERDATA,
|
||||
Cuhre(fNDim, NCOMP, Integrand, USERDATA, NVEC,
|
||||
EPSREL, EPSABS, VERBOSE | LAST, MINEVAL, MAXEVAL,
|
||||
KEY, STATEFILE,
|
||||
KEY, STATEFILE, SPIN,
|
||||
&nregions, &neval, &fail, integral, error, prob);
|
||||
|
||||
return integral[0];
|
||||
@ -96,6 +98,7 @@ std::vector<double> TCosSqDWaveGapIntegralCuhre::fPar;
|
||||
double TCosSqDWaveGapIntegralCuhre::IntegrateFunc()
|
||||
{
|
||||
const unsigned int NCOMP(1);
|
||||
const unsigned int NVEC(1);
|
||||
const double EPSREL (1e-8);
|
||||
const double EPSABS (1e-6);
|
||||
const unsigned int VERBOSE (0);
|
||||
@ -108,9 +111,9 @@ double TCosSqDWaveGapIntegralCuhre::IntegrateFunc()
|
||||
int nregions, neval, fail;
|
||||
double integral[NCOMP], error[NCOMP], prob[NCOMP];
|
||||
|
||||
Cuhre(fNDim, NCOMP, Integrand, USERDATA,
|
||||
Cuhre(fNDim, NCOMP, Integrand, USERDATA, NVEC,
|
||||
EPSREL, EPSABS, VERBOSE | LAST, MINEVAL, MAXEVAL,
|
||||
KEY, STATEFILE,
|
||||
KEY, STATEFILE, SPIN,
|
||||
&nregions, &neval, &fail, integral, error, prob);
|
||||
|
||||
return integral[0];
|
||||
@ -147,6 +150,7 @@ std::vector<double> TSinSqDWaveGapIntegralCuhre::fPar;
|
||||
double TSinSqDWaveGapIntegralCuhre::IntegrateFunc()
|
||||
{
|
||||
const unsigned int NCOMP(1);
|
||||
const unsigned int NVEC(1);
|
||||
const double EPSREL (1e-8);
|
||||
const double EPSABS (1e-10);
|
||||
const unsigned int VERBOSE (0);
|
||||
@ -159,9 +163,9 @@ double TSinSqDWaveGapIntegralCuhre::IntegrateFunc()
|
||||
int nregions, neval, fail;
|
||||
double integral[NCOMP], error[NCOMP], prob[NCOMP];
|
||||
|
||||
Cuhre(fNDim, NCOMP, Integrand, USERDATA,
|
||||
Cuhre(fNDim, NCOMP, Integrand, USERDATA, NVEC,
|
||||
EPSREL, EPSABS, VERBOSE | LAST, MINEVAL, MAXEVAL,
|
||||
KEY, STATEFILE,
|
||||
KEY, STATEFILE, SPIN,
|
||||
&nregions, &neval, &fail, integral, error, prob);
|
||||
|
||||
return integral[0];
|
||||
@ -198,6 +202,7 @@ std::vector<double> TAnSWaveGapIntegralCuhre::fPar;
|
||||
double TAnSWaveGapIntegralCuhre::IntegrateFunc()
|
||||
{
|
||||
const unsigned int NCOMP(1);
|
||||
const unsigned int NVEC(1);
|
||||
const double EPSREL (1e-4);
|
||||
const double EPSABS (1e-6);
|
||||
const unsigned int VERBOSE (0);
|
||||
@ -210,9 +215,9 @@ double TAnSWaveGapIntegralCuhre::IntegrateFunc()
|
||||
int nregions, neval, fail;
|
||||
double integral[NCOMP], error[NCOMP], prob[NCOMP];
|
||||
|
||||
Cuhre(fNDim, NCOMP, Integrand, USERDATA,
|
||||
Cuhre(fNDim, NCOMP, Integrand, USERDATA, NVEC,
|
||||
EPSREL, EPSABS, VERBOSE | LAST, MINEVAL, MAXEVAL,
|
||||
KEY, STATEFILE,
|
||||
KEY, STATEFILE, SPIN,
|
||||
&nregions, &neval, &fail, integral, error, prob);
|
||||
|
||||
return integral[0];
|
||||
@ -249,6 +254,7 @@ std::vector<double> TAnSWaveGapIntegralDivonne::fPar;
|
||||
double TAnSWaveGapIntegralDivonne::IntegrateFunc()
|
||||
{
|
||||
const unsigned int NCOMP(1);
|
||||
const unsigned int NVEC(1);
|
||||
const double EPSREL (1e-4);
|
||||
const double EPSABS (1e-6);
|
||||
const unsigned int VERBOSE (0);
|
||||
@ -268,10 +274,10 @@ double TAnSWaveGapIntegralDivonne::IntegrateFunc()
|
||||
int nregions, neval, fail;
|
||||
double integral[NCOMP], error[NCOMP], prob[NCOMP];
|
||||
|
||||
Divonne(fNDim, NCOMP, Integrand, USERDATA,
|
||||
Divonne(fNDim, NCOMP, Integrand, USERDATA, NVEC,
|
||||
EPSREL, EPSABS, VERBOSE, SEED, MINEVAL, MAXEVAL,
|
||||
KEY1, KEY2, KEY3, MAXPASS, BORDER, MAXCHISQ, MINDEVIATION,
|
||||
NGIVEN, LDXGIVEN, NULL, NEXTRA, NULL, STATEFILE,
|
||||
NGIVEN, LDXGIVEN, NULL, NEXTRA, NULL, STATEFILE, SPIN,
|
||||
&nregions, &neval, &fail, integral, error, prob);
|
||||
|
||||
return integral[0];
|
||||
@ -308,6 +314,7 @@ std::vector<double> TAnSWaveGapIntegralSuave::fPar;
|
||||
double TAnSWaveGapIntegralSuave::IntegrateFunc()
|
||||
{
|
||||
const unsigned int NCOMP(1);
|
||||
const unsigned int NVEC(1);
|
||||
const double EPSREL (1e-4);
|
||||
const double EPSABS (1e-6);
|
||||
const unsigned int VERBOSE (0);
|
||||
@ -316,14 +323,15 @@ double TAnSWaveGapIntegralSuave::IntegrateFunc()
|
||||
const unsigned int MAXEVAL (1000000);
|
||||
|
||||
const unsigned int NNEW (1000);
|
||||
const unsigned int NMIN (2);
|
||||
const double FLATNESS (25.);
|
||||
|
||||
int nregions, neval, fail;
|
||||
double integral[NCOMP], error[NCOMP], prob[NCOMP];
|
||||
|
||||
Suave(fNDim, NCOMP, Integrand, USERDATA,
|
||||
Suave(fNDim, NCOMP, Integrand, USERDATA, NVEC,
|
||||
EPSREL, EPSABS, VERBOSE | LAST, SEED, MINEVAL, MAXEVAL,
|
||||
NNEW, FLATNESS, STATEFILE,
|
||||
NNEW, NMIN, FLATNESS, STATEFILE, SPIN,
|
||||
&nregions, &neval, &fail, integral, error, prob);
|
||||
|
||||
return integral[0];
|
||||
@ -360,6 +368,7 @@ std::vector<double> TNonMonDWave1GapIntegralCuhre::fPar;
|
||||
double TNonMonDWave1GapIntegralCuhre::IntegrateFunc()
|
||||
{
|
||||
const unsigned int NCOMP(1);
|
||||
const unsigned int NVEC(1);
|
||||
const double EPSREL (1e-4);
|
||||
const double EPSABS (1e-6);
|
||||
const unsigned int VERBOSE (0);
|
||||
@ -372,9 +381,9 @@ double TNonMonDWave1GapIntegralCuhre::IntegrateFunc()
|
||||
int nregions, neval, fail;
|
||||
double integral[NCOMP], error[NCOMP], prob[NCOMP];
|
||||
|
||||
Cuhre(fNDim, NCOMP, Integrand, USERDATA,
|
||||
Cuhre(fNDim, NCOMP, Integrand, USERDATA, NVEC,
|
||||
EPSREL, EPSABS, VERBOSE | LAST, MINEVAL, MAXEVAL,
|
||||
KEY, STATEFILE,
|
||||
KEY, STATEFILE, SPIN,
|
||||
&nregions, &neval, &fail, integral, error, prob);
|
||||
|
||||
return integral[0];
|
||||
@ -411,6 +420,7 @@ std::vector<double> TNonMonDWave2GapIntegralCuhre::fPar;
|
||||
double TNonMonDWave2GapIntegralCuhre::IntegrateFunc()
|
||||
{
|
||||
const unsigned int NCOMP(1);
|
||||
const unsigned int NVEC(1);
|
||||
const double EPSREL (1e-4);
|
||||
const double EPSABS (1e-6);
|
||||
const unsigned int VERBOSE (0);
|
||||
@ -423,9 +433,9 @@ double TNonMonDWave2GapIntegralCuhre::IntegrateFunc()
|
||||
int nregions, neval, fail;
|
||||
double integral[NCOMP], error[NCOMP], prob[NCOMP];
|
||||
|
||||
Cuhre(fNDim, NCOMP, Integrand, USERDATA,
|
||||
Cuhre(fNDim, NCOMP, Integrand, USERDATA, NVEC,
|
||||
EPSREL, EPSABS, VERBOSE | LAST, MINEVAL, MAXEVAL,
|
||||
KEY, STATEFILE,
|
||||
KEY, STATEFILE, SPIN,
|
||||
&nregions, &neval, &fail, integral, error, prob);
|
||||
|
||||
return integral[0];
|
||||
|
77
src/external/BMWtools/CMakeLists.txt
vendored
Normal file
77
src/external/BMWtools/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,77 @@
|
||||
# - BMWtools library ----------------------------------------------------------
|
||||
|
||||
#--- generate necessary dictionaries ------------------------------------------
|
||||
set(MUSRFIT_INC ${CMAKE_SOURCE_DIR}/src/include)
|
||||
set(CUBA_INC ${CMAKE_SOURCE_DIR}/src/external/libCuba/src)
|
||||
|
||||
root_generate_dictionary(
|
||||
BMWStartupHandlerDict
|
||||
-I${MUSRFIT_INC}
|
||||
BMWStartupHandler.h
|
||||
LINKDEF BMWStartupHandlerLinkDef.h
|
||||
)
|
||||
|
||||
#--- create pkg-config info ---------------------------------------------------
|
||||
#[==[ //as35 for now do not create a pkgconfig file
|
||||
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||
set(exec_prefix "\$\{prefix\}")
|
||||
set(libdir "\$\{exec_prefix\}/lib")
|
||||
set(includedir "\$\{prefix\}/include")
|
||||
set(BMW_TOOLS_VERSION "1.0.0")
|
||||
set(BMW_TOOLS_LIBRARY_NAME "BMWtools")
|
||||
configure_file("BMWtools.pc.in" "BMWtools.pc" @ONLY)
|
||||
#]==]
|
||||
|
||||
#--- lib creation -------------------------------------------------------------
|
||||
add_library(BMWtools SHARED
|
||||
BMWStartupHandler.cpp
|
||||
BMWStartupHandlerDict.cxx
|
||||
TTrimSPDataHandler.cpp
|
||||
BMWIntegrator.cpp
|
||||
)
|
||||
|
||||
#--- set target properties, e.g. version --------------------------------------
|
||||
set_target_properties(BMWtools
|
||||
PROPERTIES
|
||||
VERSION "1.0.0"
|
||||
)
|
||||
|
||||
#--- make sure that the include directory is found ----------------------------
|
||||
target_include_directories(
|
||||
BMWtools BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${FFTW3_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${CUBA_INC}>
|
||||
$<BUILD_INTERFACE:${MUSRFIT_INC}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
)
|
||||
|
||||
#--- add library dependencies -------------------------------------------------
|
||||
target_link_libraries(BMWtools ${ROOT_LIBRARIES} cuba)
|
||||
|
||||
#--- install BMWtools solib ---------------------------------------------------
|
||||
install(TARGETS BMWtools DESTINATION lib)
|
||||
|
||||
#--- install root pcm's and rootmaps ------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/libBMWStartupHandlerDict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libBMWStartupHandlerDict.rootmap
|
||||
DESTINATION lib
|
||||
)
|
||||
|
||||
#--- install BMWtools header --------------------------------------------------
|
||||
install(
|
||||
FILES
|
||||
BMWStartupHandler.h
|
||||
TTrimSPDataHandler.h
|
||||
BMWIntegrator.h
|
||||
DESTINATION
|
||||
include
|
||||
)
|
||||
|
||||
#--- install pkg-config info --------------------------------------------------
|
||||
#[==[ //as35 for now do not install a pkgconfig file
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/BMWtools.pc
|
||||
DESTINATION lib/pkgconfig
|
||||
)
|
||||
#]==]
|
30
src/external/CMakeLists.txt
vendored
Normal file
30
src/external/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
if (ASlibs)
|
||||
add_subdirectory(Nonlocal)
|
||||
add_subdirectory(MagProximity)
|
||||
add_subdirectory(libPhotoMeissner)
|
||||
add_subdirectory(libSpinValve)
|
||||
endif (ASlibs)
|
||||
|
||||
if (BMWlibs)
|
||||
add_subdirectory(libCuba)
|
||||
add_subdirectory(BMWtools)
|
||||
add_subdirectory(libCalcMeanFieldsLEM)
|
||||
add_subdirectory(libFitPofB)
|
||||
add_subdirectory(libGapIntegrals)
|
||||
add_subdirectory(libLFRelaxation)
|
||||
add_subdirectory(libZFRelaxation)
|
||||
endif (BMWlibs)
|
||||
|
||||
if (BNMRlibs)
|
||||
add_subdirectory(libBNMR)
|
||||
endif (BNMRlibs)
|
||||
|
||||
add_subdirectory(mud)
|
||||
add_subdirectory(MusrRoot)
|
||||
add_subdirectory(TLemRunHeader)
|
||||
add_subdirectory(MuSR_software)
|
||||
|
||||
if (nexus)
|
||||
add_subdirectory(nexus)
|
||||
endif (nexus)
|
||||
|
82
src/external/MagProximity/CMakeLists.txt
vendored
Normal file
82
src/external/MagProximity/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,82 @@
|
||||
# - Mag. Proximity library ----------------------------------------------------
|
||||
|
||||
#--- generate necessary dictionaries ------------------------------------------
|
||||
set(MUSRFIT_INC ${CMAKE_SOURCE_DIR}/src/include)
|
||||
root_generate_dictionary(
|
||||
PMagProximityFitterDict
|
||||
-I${FFTW3_INCLUDE}
|
||||
-I${MUSRFIT_INC}
|
||||
PMagProximityFitter.h
|
||||
LINKDEF PMagProximityFitterLinkDef.h
|
||||
)
|
||||
root_generate_dictionary(
|
||||
PMPStartupHandlerDict
|
||||
-I${MUSRFIT_INC}
|
||||
PMPStartupHandler.h
|
||||
LINKDEF PMPStartupHandlerLinkDef.h
|
||||
)
|
||||
|
||||
#--- create pkg-config info ---------------------------------------------------
|
||||
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||
set(exec_prefix "\$\{prefix\}")
|
||||
set(libdir "\$\{exec_prefix\}/lib")
|
||||
set(includedir "\$\{prefix\}/include")
|
||||
set(P_MAG_PROXIMITY_FITTER_VERSION "1.0.0")
|
||||
set(P_MAG_PROXIMITY_FITTER_LIBRARY_NAME "PMagProximityFitter")
|
||||
configure_file("PMagProximityFitter.pc.in" "PMagProximityFitter.pc" @ONLY)
|
||||
|
||||
#--- lib creation -------------------------------------------------------------
|
||||
add_library(PMagProximityFitter SHARED
|
||||
PMagProximityFitter.cpp
|
||||
PMagProximityFitterDict.cxx
|
||||
PMPRgeHandler.cpp
|
||||
PMPStartupHandler.cpp
|
||||
PMPStartupHandlerDict.cxx
|
||||
)
|
||||
#--- make sure that the include directory is found ----------------------------
|
||||
target_include_directories(
|
||||
PMagProximityFitter BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${FFTW3_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${MUSRFIT_INC}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
)
|
||||
|
||||
#--- set target properties, e.g. version --------------------------------------
|
||||
set_target_properties(PMagProximityFitter
|
||||
PROPERTIES
|
||||
VERSION ${P_MAG_PROXIMITY_FITTER_VERSION}
|
||||
)
|
||||
|
||||
#--- add library dependencies -------------------------------------------------
|
||||
target_link_libraries(PMagProximityFitter ${FFTW3_LIBRARY} ${ROOT_LIBRARIES} PUserFcnBase)
|
||||
|
||||
#--- install PMagProximityFitter solib ----------------------------------------
|
||||
install(TARGETS PMagProximityFitter DESTINATION lib)
|
||||
|
||||
#--- install root pcm's and rootmaps ------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/libPMagProximityFitterDict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPMagProximityFitterDict.rootmap
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPMPStartupHandlerDict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPMPStartupHandlerDict.rootmap
|
||||
DESTINATION lib
|
||||
)
|
||||
|
||||
#--- install PMagProximityFitter header ---------------------------------------
|
||||
install(
|
||||
FILES
|
||||
PMagProximity.h
|
||||
PMagProximityFitter.h
|
||||
PMPRgeHandler.h
|
||||
PMPStartupHandler.h
|
||||
DESTINATION
|
||||
include
|
||||
)
|
||||
|
||||
#--- install pkg-config info --------------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/PMagProximityFitter.pc
|
||||
DESTINATION lib/pkgconfig
|
||||
)
|
||||
|
||||
|
2
src/external/MagProximity/PMPRgeHandler.cpp
vendored
2
src/external/MagProximity/PMPRgeHandler.cpp
vendored
@ -94,7 +94,7 @@ Double_t PMPRgeHandler::GetRgeValue(const Int_t index, const Double_t dist)
|
||||
|
||||
UInt_t distIdx = (UInt_t)(dist/(fRgeDataList[index].stoppingDistance[1]-fRgeDataList[index].stoppingDistance[0]));
|
||||
|
||||
if ((distIdx >= fRgeDataList[index].stoppingDistance.size()) || (distIdx < 0)) {
|
||||
if (distIdx >= fRgeDataList[index].stoppingDistance.size()) {
|
||||
rgeVal = 0.0;
|
||||
} else {
|
||||
rgeVal = fRgeDataList[index].stoppingAmplitude[distIdx] +
|
||||
|
10
src/external/MagProximity/PMagProximityFitter.pc.in
vendored
Normal file
10
src/external/MagProximity/PMagProximityFitter.pc.in
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: PMagProximityFitter
|
||||
Description: C++ shared library providing the mag. proximity fitter class
|
||||
Version: @P_MAG_PROXIMITY_FITTER_VERSION@
|
||||
Libs: -L${libdir} -l@P_MAG_PROXIMITY_FITTER_LIBRARY_NAME@
|
||||
Cflags: -I${includedir}
|
1
src/external/MuSR_software/CMakeLists.txt
vendored
Normal file
1
src/external/MuSR_software/CMakeLists.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
add_subdirectory(Class_MuSR_PSI)
|
40
src/external/MuSR_software/Class_MuSR_PSI/CMakeLists.txt
vendored
Normal file
40
src/external/MuSR_software/Class_MuSR_PSI/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
# - Class_MuSR_PSI library ----------------------------------------------------
|
||||
|
||||
#--- create pkg-config info ---------------------------------------------------
|
||||
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||
set(exec_prefix "\$\{prefix\}")
|
||||
set(libdir "\$\{exec_prefix\}/lib")
|
||||
set(includedir "\$\{prefix\}/include")
|
||||
set(PSIBIN_VERSION "0.1.0")
|
||||
set(PSIBIN_LIBRARY_NAME "Class_MuSR_PSI")
|
||||
configure_file("Class_MuSR_PSI.pc.in" "Class_MuSR_PSI.pc" @ONLY)
|
||||
|
||||
#--- OS dependent pre-compiler settings for PSI-BIN ---------------------------
|
||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
add_definitions(-D__linux__)
|
||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
add_definitions(-D_Darwin_)
|
||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
add_definitions(-D_WIN32)
|
||||
endif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
|
||||
#--- lib creation -------------------------------------------------------------
|
||||
add_library(Class_MuSR_PSI SHARED MuSR_td_PSI_bin.cpp)
|
||||
|
||||
#--- set target properties, e.g. version --------------------------------------
|
||||
set_target_properties(Class_MuSR_PSI
|
||||
PROPERTIES
|
||||
VERSION ${PSIBIN_VERSION}
|
||||
)
|
||||
|
||||
#--- install Class_MuSR_PSI solib ---------------------------------------------
|
||||
install(TARGETS Class_MuSR_PSI DESTINATION lib)
|
||||
|
||||
#--- install MuSR_td_PSI_bin header -------------------------------------------
|
||||
install(FILES MuSR_td_PSI_bin.h DESTINATION include)
|
||||
|
||||
#--- install pkg-config info --------------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/Class_MuSR_PSI.pc
|
||||
DESTINATION lib/pkgconfig
|
||||
)
|
53
src/external/MusrRoot/CMakeLists.txt
vendored
Normal file
53
src/external/MusrRoot/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
# - TMusrRunHeader library ----------------------------------------------------
|
||||
|
||||
#--- generate necessary dictionaries ------------------------------------------
|
||||
root_generate_dictionary(
|
||||
TMusrRunHeaderDict TMusrRunHeader.h LINKDEF TMusrRunHeaderLinkDef.h
|
||||
)
|
||||
|
||||
#--- create pkg-config info ---------------------------------------------------
|
||||
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||
set(exec_prefix "\$\{prefix\}")
|
||||
set(libdir "\$\{exec_prefix\}/lib")
|
||||
set(includedir "\$\{prefix\}/include")
|
||||
set(MUSR_ROOT_VERSION "1.0.0")
|
||||
set(MUSR_ROOT_LIBRARY_NAME "TMusrRunHeader")
|
||||
configure_file("TMusrRunHeader.pc.in" "TMusrRunHeader.pc" @ONLY)
|
||||
|
||||
#--- lib creation -------------------------------------------------------------
|
||||
add_library(TMusrRunHeader SHARED
|
||||
TMusrRunHeader.cpp
|
||||
TMusrRunHeaderDict.cxx
|
||||
)
|
||||
#--- make sure that the include directory is found ----------------------------
|
||||
target_include_directories(
|
||||
TMusrRunHeader BEFORE PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
)
|
||||
|
||||
#--- set target properties, e.g. version --------------------------------------
|
||||
set_target_properties(TMusrRunHeader
|
||||
PROPERTIES
|
||||
VERSION ${MUSR_ROOT_VERSION}
|
||||
)
|
||||
|
||||
#--- add library dependencies -------------------------------------------------
|
||||
target_link_libraries(TMusrRunHeader ${ROOT_LIBRARIES})
|
||||
|
||||
#--- install TMusrRunHeader solib ---------------------------------------------
|
||||
install(TARGETS TMusrRunHeader DESTINATION lib)
|
||||
|
||||
#--- install root pcm's and rootmaps ------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/libTMusrRunHeaderDict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libTMusrRunHeaderDict.rootmap
|
||||
DESTINATION lib
|
||||
)
|
||||
|
||||
#--- install TMusrRunHeader header --------------------------------------------
|
||||
install(FILES TMusrRunHeader.h DESTINATION include)
|
||||
|
||||
#--- install pkg-config info --------------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/TMusrRunHeader.pc
|
||||
DESTINATION lib/pkgconfig
|
||||
)
|
77
src/external/Nonlocal/CMakeLists.txt
vendored
Normal file
77
src/external/Nonlocal/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,77 @@
|
||||
# - Nonlocal library ----------------------------------------------------------
|
||||
|
||||
#--- generate necessary dictionaries ------------------------------------------
|
||||
set(MUSRFIT_INC ${CMAKE_SOURCE_DIR}/src/include)
|
||||
|
||||
root_generate_dictionary(
|
||||
PNL_PippardFitterDict
|
||||
-I${FFTW3_INCLUDE_DIR}
|
||||
-I${MUSRFIT_INC}
|
||||
PNL_PippardFitter.h
|
||||
LINKDEF PNL_PippardFitterLinkDef.h
|
||||
)
|
||||
root_generate_dictionary(
|
||||
PNL_StartupHandlerDict PNL_StartupHandler.h LINKDEF PNL_StartupHandlerLinkDef.h
|
||||
)
|
||||
|
||||
#--- create pkg-config info ---------------------------------------------------
|
||||
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||
set(exec_prefix "\$\{prefix\}")
|
||||
set(libdir "\$\{exec_prefix\}/lib")
|
||||
set(includedir "\$\{prefix\}/include")
|
||||
set(PNL_PIPPARDFITTER_VERSION "1.0.0")
|
||||
set(PNL_PIPPARDFITTER_LIBRARY_NAME "PNL_PippardFitter")
|
||||
configure_file("PNL_PippardFitter.pc.in" "PNL_PippardFitter.pc" @ONLY)
|
||||
|
||||
#--- lib creation -------------------------------------------------------------
|
||||
add_library(PNL_PippardFitter SHARED
|
||||
PNL_PippardFitter.cpp
|
||||
PNL_PippardFitterDict.cxx
|
||||
PNL_RgeHandler.cpp
|
||||
PNL_StartupHandler.cpp
|
||||
PNL_StartupHandlerDict.cxx
|
||||
)
|
||||
#--- make sure that the include directory is found ----------------------------
|
||||
target_include_directories(
|
||||
PNL_PippardFitter BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${FFTW3_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${MUSRFIT_INC}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
)
|
||||
|
||||
#--- set target properties, e.g. version --------------------------------------
|
||||
set_target_properties(PNL_PippardFitter
|
||||
PROPERTIES
|
||||
VERSION ${PNL_PIPPARDFITTER_VERSION}
|
||||
)
|
||||
|
||||
#--- add library dependencies -------------------------------------------------
|
||||
target_link_libraries(PNL_PippardFitter ${FFTW3_LIBRARY} ${ROOT_LIBRARIES} PUserFcnBase)
|
||||
|
||||
#--- install PNL_PippardFitter solib ------------------------------------------
|
||||
install(TARGETS PNL_PippardFitter DESTINATION lib)
|
||||
|
||||
#--- install root pcm's and rootmaps ------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/libPNL_PippardFitterDict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPNL_PippardFitterDict.rootmap
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPNL_StartupHandlerDict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libPNL_StartupHandlerDict.rootmap
|
||||
DESTINATION lib
|
||||
)
|
||||
|
||||
#--- install PNL_PippardFitter header -----------------------------------------
|
||||
install(
|
||||
FILES
|
||||
PNL_PippardFitter.h
|
||||
PNL_RgeHandler.h
|
||||
PNL_StartupHandler.h
|
||||
DESTINATION
|
||||
include
|
||||
)
|
||||
|
||||
#--- install pkg-config info --------------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/PNL_PippardFitter.pc
|
||||
DESTINATION lib/pkgconfig
|
||||
)
|
10
src/external/Nonlocal/PNL_PippardFitter.pc.in
vendored
Normal file
10
src/external/Nonlocal/PNL_PippardFitter.pc.in
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: PNL_PippardFitter
|
||||
Description: C++ shared library providing the nonlocal sc fitter class
|
||||
Version: @PNL_PIPPARDFITTER_VERSION@
|
||||
Libs: -L${libdir} -l@PNL_PIPPARDFITTER_LIBRARY_NAME@
|
||||
Cflags: -I${includedir}
|
61
src/external/TLemRunHeader/CMakeLists.txt
vendored
Normal file
61
src/external/TLemRunHeader/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
# -TLemRunHeader library ------------------------------------------------------
|
||||
|
||||
#--- generate necessary dictionaries ------------------------------------------
|
||||
root_generate_dictionary(
|
||||
TLemRunHeaderDict TLemRunHeader.h LINKDEF TLemRunHeaderLinkDef.h
|
||||
)
|
||||
root_generate_dictionary(
|
||||
TLemStatsDict TLemStats.h LINKDEF TLemStatsLinkDef.h
|
||||
)
|
||||
|
||||
#--- create pkg-config info ---------------------------------------------------
|
||||
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||
set(exec_prefix "\$\{prefix\}")
|
||||
set(libdir "\$\{exec_prefix\}/lib")
|
||||
set(includedir "\$\{prefix\}/include")
|
||||
set(LEM_VERSION "1.5.0")
|
||||
set(LEM_LIBRARY_NAME "TLemRunHeader")
|
||||
configure_file("TLemRunHeader.pc.in" "TLemRunHeader.pc" @ONLY)
|
||||
|
||||
#--- lib creation -------------------------------------------------------------
|
||||
add_library(TLemRunHeader SHARED
|
||||
TLemRunHeader.cxx
|
||||
TLemRunHeaderDict.cxx
|
||||
TLemStats.cxx
|
||||
TLemStatsDict.cxx
|
||||
)
|
||||
|
||||
#--- set target properties, e.g. version --------------------------------------
|
||||
set_target_properties(TLemRunHeader
|
||||
PROPERTIES
|
||||
VERSION ${LEM_VERSION}
|
||||
)
|
||||
|
||||
#--- make sure that the include directory is found ----------------------------
|
||||
target_include_directories(
|
||||
TLemRunHeader BEFORE PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
)
|
||||
|
||||
#--- add library dependencies -------------------------------------------------
|
||||
target_link_libraries(TLemRunHeader ${ROOT_LIBRARIES})
|
||||
|
||||
#--- install TLemRunHeader solib ----------------------------------------------
|
||||
install(TARGETS TLemRunHeader DESTINATION lib)
|
||||
|
||||
#--- install root pcm's and rootmaps ------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/libTLemRunHeaderDict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libTLemRunHeaderDict.rootmap
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libTLemStatsDict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libTLemStatsDict.rootmap
|
||||
DESTINATION lib
|
||||
)
|
||||
|
||||
#--- install headers ----------------------------------------------------------
|
||||
install(FILES TLemRunHeader.h TLemStats.h DESTINATION include)
|
||||
|
||||
#--- install pkg-config info --------------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/TLemRunHeader.pc
|
||||
DESTINATION lib/pkgconfig
|
||||
)
|
53
src/external/libBNMR/CMakeLists.txt
vendored
Normal file
53
src/external/libBNMR/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
# - beta-NMR library ----------------------------------------------------------
|
||||
|
||||
#--- generate necessary dictionaries ------------------------------------------
|
||||
set(MUSRFIT_INC ${CMAKE_SOURCE_DIR}/src/include)
|
||||
|
||||
root_generate_dictionary(
|
||||
TBNMRDict
|
||||
-I${FFTW3_INCLUDE_DIR}
|
||||
-I${MUSRFIT_INC}
|
||||
TBNMR.h
|
||||
LINKDEF TBNMRLinkDef.h
|
||||
)
|
||||
|
||||
#--- lib creation -------------------------------------------------------------
|
||||
add_library(BNMR SHARED
|
||||
TBNMR.cpp
|
||||
TBNMRDict.cxx
|
||||
)
|
||||
|
||||
#--- make sure that the include directory is found ----------------------------
|
||||
target_include_directories(
|
||||
BNMR BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${MUSRFIT_INC}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
)
|
||||
|
||||
#--- set target properties, e.g. version --------------------------------------
|
||||
set_target_properties(BNMR
|
||||
PROPERTIES
|
||||
VERSION "1.0.0"
|
||||
)
|
||||
|
||||
#--- add library dependencies -------------------------------------------------
|
||||
target_link_libraries(BNMR ${ROOT_LIBRARIES} PUserFcnBase)
|
||||
|
||||
#--- install libBNMR solib ----------------------------------------------------
|
||||
install(TARGETS BNMR DESTINATION lib)
|
||||
|
||||
#--- install root pcm's and rootmaps ------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/libTBNMRDict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libTBNMRDict.rootmap
|
||||
DESTINATION lib
|
||||
)
|
||||
|
||||
#--- install libBNMR header ---------------------------------------------------
|
||||
install(
|
||||
FILES
|
||||
TBNMR.h
|
||||
DESTINATION
|
||||
include
|
||||
)
|
||||
|
81
src/external/libCalcMeanFieldsLEM/CMakeLists.txt
vendored
Normal file
81
src/external/libCalcMeanFieldsLEM/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,81 @@
|
||||
# - libCalcMeanFieldsLEM library ----------------------------------------------
|
||||
|
||||
#--- generate necessary dictionaries ------------------------------------------
|
||||
set(MUSRFIT_INC ${CMAKE_SOURCE_DIR}/src/include)
|
||||
set(BMW_TOOLS_INC ${CMAKE_SOURCE_DIR}/src/external/BMWtools)
|
||||
set(POFB_INC ${CMAKE_SOURCE_DIR}/src/external/libFitPofB/include)
|
||||
|
||||
root_generate_dictionary(
|
||||
TCalcMeanFieldsLEMDict
|
||||
-I${FFTW3_INCLUDE_DIR}
|
||||
-I${MUSRFIT_INC}
|
||||
-I${BMW_TOOLS_INC}
|
||||
-I${POFB_INC}
|
||||
TCalcMeanFieldsLEM.h
|
||||
LINKDEF TCalcMeanFieldsLEMLinkDef.h
|
||||
)
|
||||
|
||||
#--- create pkg-config info ---------------------------------------------------
|
||||
#[==[ //as35 for now do not create a pkgconfig file
|
||||
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||
set(exec_prefix "\$\{prefix\}")
|
||||
set(libdir "\$\{exec_prefix\}/lib")
|
||||
set(includedir "\$\{prefix\}/include")
|
||||
set(T_CALC_MEAN_FIELD_LEM_VERSION "1.0.0")
|
||||
set(T_CALC_MEAN_FIELD_LEM_LIBRARY_NAME "TCalcMeanFieldsLEM")
|
||||
configure_file("TCalcMeanFieldsLEM.pc.in" "TCalcMeanFieldsLEM.pc" @ONLY)
|
||||
#]==]
|
||||
|
||||
#--- lib creation -------------------------------------------------------------
|
||||
add_library(CalcMeanFieldsLEM SHARED
|
||||
TCalcMeanFieldsLEM.cpp
|
||||
TCalcMeanFieldsLEMDict.cxx
|
||||
)
|
||||
|
||||
#--- set target properties, e.g. version --------------------------------------
|
||||
set_target_properties(CalcMeanFieldsLEM
|
||||
PROPERTIES
|
||||
VERSION "1.0.0"
|
||||
)
|
||||
|
||||
#--- make sure that the include directory is found ----------------------------
|
||||
target_include_directories(
|
||||
CalcMeanFieldsLEM BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${FFTW3_INCLUDE_DIR}>
|
||||
$<BUILD_INTERFACE:${MUSRFIT_INC}>
|
||||
$<BUILD_INTERFACE:${BMW_TOOLS_INC}>
|
||||
$<BUILD_INTERFACE:${POFB_INC}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
)
|
||||
|
||||
#--- add library dependencies -------------------------------------------------
|
||||
target_link_libraries(CalcMeanFieldsLEM
|
||||
${FFTW3_LIBRARY} ${ROOT_LIBRARIES} BMWtools FitPofB PUserFcnBase
|
||||
)
|
||||
|
||||
#--- install CalcMeanFieldsLEM solib ------------------------------------------
|
||||
install(TARGETS CalcMeanFieldsLEM DESTINATION lib)
|
||||
|
||||
#--- install root pcm's and rootmaps ------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/libTCalcMeanFieldsLEMDict_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libTCalcMeanFieldsLEMDict.rootmap
|
||||
DESTINATION lib
|
||||
)
|
||||
|
||||
#--- install CalcMeanFieldsLEM header -----------------------------------------
|
||||
install(
|
||||
FILES
|
||||
TCalcMeanFieldsLEM.h
|
||||
DESTINATION
|
||||
include
|
||||
)
|
||||
|
||||
#--- install pkg-config info --------------------------------------------------
|
||||
#[==[ //as35 for now do not install a pkgconfig file
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/TCalcMeanFieldsLEM.pc
|
||||
DESTINATION lib/pkgconfig
|
||||
)
|
||||
#]==]
|
||||
|
1
src/external/libCuba/CMakeLists.txt
vendored
Normal file
1
src/external/libCuba/CMakeLists.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
add_subdirectory(src)
|
48
src/external/libCuba/src/CMakeLists.txt
vendored
Normal file
48
src/external/libCuba/src/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
# - cuba library --------------------------------------------------------------
|
||||
|
||||
#--- create pkg-config info ---------------------------------------------------
|
||||
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||
set(exec_prefix "\$\{prefix\}")
|
||||
set(libdir "\$\{exec_prefix\}/lib")
|
||||
set(includedir "\$\{prefix\}/include")
|
||||
set(CUBA_VERSION "4.2.0")
|
||||
set(CUBA_LIBRARY_NAME "cuba")
|
||||
configure_file("cuba.pc.in" "cuba.pc" @ONLY)
|
||||
|
||||
add_subdirectory(common)
|
||||
add_subdirectory(cuhre)
|
||||
add_subdirectory(divonne)
|
||||
add_subdirectory(suave)
|
||||
add_subdirectory(vegas)
|
||||
|
||||
#--- lib creation -------------------------------------------------------------
|
||||
add_library(cuba SHARED
|
||||
$<TARGET_OBJECTS:common>
|
||||
$<TARGET_OBJECTS:cuhre>
|
||||
$<TARGET_OBJECTS:divonne>
|
||||
$<TARGET_OBJECTS:suave>
|
||||
$<TARGET_OBJECTS:vegas>
|
||||
)
|
||||
|
||||
#--- set target properties, e.g. version --------------------------------------
|
||||
set_target_properties(cuba
|
||||
PROPERTIES
|
||||
VERSION ${CUBA_VERSION}
|
||||
)
|
||||
|
||||
#--- install cuba solib -------------------------------------------------------
|
||||
install(TARGETS cuba DESTINATION lib)
|
||||
|
||||
#--- install cuba header ------------------------------------------------------
|
||||
install(
|
||||
FILES
|
||||
cuba.h
|
||||
DESTINATION
|
||||
include
|
||||
)
|
||||
|
||||
#--- install pkg-config info --------------------------------------------------
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/cuba.pc
|
||||
DESTINATION lib/pkgconfig
|
||||
)
|
2
src/external/libCuba/src/Makefile.am
vendored
2
src/external/libCuba/src/Makefile.am
vendored
@ -11,7 +11,7 @@ lib_LTLIBRARIES = libcuba.la
|
||||
|
||||
libcuba_la_SOURCES =
|
||||
|
||||
libcuba_la_LIBADD = cuhre/libcuhre.la divonne/libdivonne.la suave/libsuave.la vegas/libvegas.la -lm
|
||||
libcuba_la_LIBADD = common/libcommon.la cuhre/libcuhre.la divonne/libdivonne.la suave/libsuave.la vegas/libvegas.la -lm
|
||||
libcuba_la_LDFLAGS = -version-info $(CUBA_LIBRARY_VERSION) -release $(CUBA_RELEASE) $(AM_LDFLAGS)
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
|
31
src/external/libCuba/src/common/CMakeLists.txt
vendored
Normal file
31
src/external/libCuba/src/common/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
#--- common -------------------------------------------------------------------
|
||||
|
||||
set(common_src Global.c)
|
||||
set(common_src ${common_src} Data.c)
|
||||
if (HAVE_FORK)
|
||||
set(common_src ${common_src} Fork.c)
|
||||
endif (HAVE_FORK)
|
||||
|
||||
#--- obj lib creation ---------------------------------------------------------
|
||||
add_library(common OBJECT ${common_src})
|
||||
|
||||
#--- make sure that the include directory is found ----------------------------
|
||||
target_include_directories(
|
||||
common BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
|
||||
)
|
||||
|
||||
#--- check for pre compile flags ----------------------------------------------
|
||||
set(COMP_DEF "-DHAVE_CONFIG_H")
|
||||
set(COMP_DEF ${COMP_DEF} "-DNOUNDERSCORE")
|
||||
|
||||
target_compile_definitions(
|
||||
common PRIVATE ${COMP_DEF}
|
||||
)
|
||||
|
||||
#--- set compiler options -----------------------------------------------------
|
||||
target_compile_options(
|
||||
common PRIVATE -fPIC
|
||||
)
|
39
src/external/libCuba/src/common/CSample.c
vendored
39
src/external/libCuba/src/common/CSample.c
vendored
@ -3,19 +3,27 @@
|
||||
the serial sampling routine
|
||||
for the C versions of the Cuba routines
|
||||
by Thomas Hahn
|
||||
last modified 19 Dec 11 th
|
||||
last modified 9 Oct 14 th
|
||||
*/
|
||||
|
||||
|
||||
static inline number SampleRaw(cThis *t, number n, creal *x, real *f
|
||||
VES_ONLY(, creal *w, ccount iter))
|
||||
coreinit cubafun_;
|
||||
extern int cubaverb_;
|
||||
extern corespec cubaworkers_;
|
||||
|
||||
|
||||
static inline number SampleRaw(This *t, number n, creal *x, real *f,
|
||||
cint core VES_ONLY(, creal *w, ccount iter))
|
||||
{
|
||||
for( ; n; --n ) {
|
||||
if( t->integrand(&t->ndim, x, &t->ncomp, f, t->userdata
|
||||
VES_ONLY(, w++, &iter)
|
||||
number nvec;
|
||||
for( nvec = t->nvec; n > 0; n -= nvec ) {
|
||||
nvec = IMin(n, nvec);
|
||||
if( t->integrand(&t->ndim, x, &t->ncomp, f, t->userdata, &nvec, &core
|
||||
VES_ONLY(, w, &iter)
|
||||
DIV_ONLY(, &t->phase)) == ABORT ) return -1;
|
||||
x += t->ndim;
|
||||
f += t->ncomp;
|
||||
VES_ONLY(w += nvec;)
|
||||
x += nvec*t->ndim;
|
||||
f += nvec*t->ncomp;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -25,8 +33,9 @@ static inline number SampleRaw(cThis *t, number n, creal *x, real *f
|
||||
static inline void DoSampleSerial(This *t, cnumber n, creal *x, real *f
|
||||
VES_ONLY(, creal *w, ccount iter))
|
||||
{
|
||||
MasterInit();
|
||||
t->neval += n;
|
||||
if( SampleRaw(t, n, x, f VES_ONLY(, w, iter)) )
|
||||
if( SampleRaw(t, n, x, f, -1 VES_ONLY(, w, iter)) )
|
||||
longjmp(t->abort, -99);
|
||||
}
|
||||
|
||||
@ -43,7 +52,13 @@ DIV_ONLY(static int Explore(This *t, cint iregion);)
|
||||
#define DoSample DoSampleSerial
|
||||
#define Explore ExploreSerial
|
||||
#define ForkCores(t)
|
||||
#define WaitCores(t)
|
||||
|
||||
static inline void WaitCores(This *t, Spin **pspin)
|
||||
{
|
||||
if( Invalid(pspin) ) MasterExit();
|
||||
}
|
||||
|
||||
#define WaitCores(t, pspin)
|
||||
|
||||
#endif
|
||||
|
||||
@ -51,7 +66,7 @@ DIV_ONLY(static int Explore(This *t, cint iregion);)
|
||||
static inline count SampleExtra(This *t, cBounds *b)
|
||||
{
|
||||
number n = t->nextra;
|
||||
t->peakfinder(&t->ndim, b, &n, t->xextra);
|
||||
t->peakfinder(&t->ndim, b, &n, t->xextra, t->userdata);
|
||||
DoSample(t, n, t->xextra, t->fextra);
|
||||
return n;
|
||||
}
|
||||
@ -60,7 +75,7 @@ static inline count SampleExtra(This *t, cBounds *b)
|
||||
#include "common.c"
|
||||
|
||||
#ifdef HAVE_FORK
|
||||
#include "Fork.c"
|
||||
#include "Parallel.c"
|
||||
#endif
|
||||
|
||||
#include "Integrate.c"
|
||||
|
10
src/external/libCuba/src/common/ChiSquare.c
vendored
10
src/external/libCuba/src/common/ChiSquare.c
vendored
@ -3,7 +3,7 @@
|
||||
the chi-square cdf
|
||||
after W.J. Kennedy and J.E. Gentle,
|
||||
Statistical computing, p. 116
|
||||
last modified 9 Feb 05 th
|
||||
last modified 12 Mar 15 th
|
||||
*/
|
||||
|
||||
#ifdef HAVE_ERF
|
||||
@ -31,7 +31,7 @@ static real ChiSquare(creal x, cint df)
|
||||
if( df > 1000 ) {
|
||||
if( x < 2 ) return 0;
|
||||
y = 2./(9*df);
|
||||
y = (pow(x/df, 1/3.) - (1 - y))/sqrt(y);
|
||||
y = (powx(x/df, 1/3.) - (1 - y))/sqrtx(y);
|
||||
if( y > 5 ) return 1;
|
||||
if( y < -18.8055 ) return 0;
|
||||
return Normal(y);
|
||||
@ -40,13 +40,13 @@ static real ChiSquare(creal x, cint df)
|
||||
y = .5*x;
|
||||
|
||||
if( df & 1 ) {
|
||||
creal sqrty = sqrt(y);
|
||||
creal sqrty = sqrtx(y);
|
||||
real h = Erf(sqrty);
|
||||
count i;
|
||||
|
||||
if( df == 1 ) return h;
|
||||
|
||||
y = sqrty*exp(-y)/.8862269254527579825931;
|
||||
y = sqrty*expx(-y)/.8862269254527579825931;
|
||||
for( i = 3; i < df; i += 2 ) {
|
||||
h -= y;
|
||||
y *= x/i;
|
||||
@ -54,7 +54,7 @@ static real ChiSquare(creal x, cint df)
|
||||
y = h - y;
|
||||
}
|
||||
else {
|
||||
real term = exp(-y), sum = term;
|
||||
real term = expx(-y), sum = term;
|
||||
count i;
|
||||
|
||||
for( i = 1; i < df/2; ++i )
|
||||
|
18
src/external/libCuba/src/common/Data.c
vendored
Normal file
18
src/external/libCuba/src/common/Data.c
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
/*
|
||||
Data.c
|
||||
initialized data for Cuba
|
||||
by Thomas Hahn
|
||||
last modified 21 Jul 14 th
|
||||
*/
|
||||
|
||||
|
||||
#include "stddecl.h"
|
||||
|
||||
int cubaverb_ = uninitialized;
|
||||
|
||||
#ifdef HAVE_FORK
|
||||
corespec cubaworkers_ = {
|
||||
uninitialized, uninitialized,
|
||||
uninitialized, uninitialized };
|
||||
#endif
|
||||
|
8
src/external/libCuba/src/common/Erf.c
vendored
8
src/external/libCuba/src/common/Erf.c
vendored
@ -4,7 +4,7 @@
|
||||
= 2/Sqrt[Pi] Integrate[Exp[-t^2], {t, 0, x}]
|
||||
Code from Takuya Ooura's gamerf2a.f
|
||||
http://www.kurims.kyoto-u.ac.jp/~ooura/gamerf.html
|
||||
last modified 8 Feb 05 th
|
||||
last modified 12 Mar 15 th
|
||||
*/
|
||||
|
||||
|
||||
@ -21,12 +21,12 @@ static real Erfc(creal x)
|
||||
1.66642447174307753e-07, 1.48455557345597957e+01,
|
||||
6.10399733098688199e+00, 1.26974899965115684e+01 };
|
||||
real y = x*x;
|
||||
y = exp(-y)*x*(
|
||||
y = expx(-y)*x*(
|
||||
c[0]/(y + c[1]) + c[2]/(y + c[3]) +
|
||||
c[4]/(y + c[5]) + c[6]/(y + c[7]) +
|
||||
c[8]/(y + c[9]) + c[10]/(y + c[11]) +
|
||||
c[12]/(y + c[13]) + c[14]/(y + c[15]) );
|
||||
if( x < c[16] ) y += 2/(exp(c[17]*x) + 1);
|
||||
if( x < c[16] ) y += 2/(expx(c[17]*x) + 1);
|
||||
return y;
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ static real Erf(creal x)
|
||||
-2.68661698447642378e-02,
|
||||
5.22387877685618101e-03,
|
||||
-8.49202435186918470e-04 };
|
||||
real y = fabs(x);
|
||||
real y = fabsx(x);
|
||||
if( y > .125 ) {
|
||||
y = 1 - Erfc(y);
|
||||
return (x > 0) ? y : -y;
|
||||
|
497
src/external/libCuba/src/common/Fork.c
vendored
497
src/external/libCuba/src/common/Fork.c
vendored
@ -1,422 +1,171 @@
|
||||
/*
|
||||
Fork.c
|
||||
the parallel sampling routine
|
||||
for the C versions of the Cuba routines
|
||||
fork the cores for parallel sampling
|
||||
(C version only)
|
||||
by Thomas Hahn
|
||||
last modified 25 Sep 13 th
|
||||
last modified 23 Apr 15 th
|
||||
*/
|
||||
|
||||
#define MINSLICE 10
|
||||
|
||||
#define ROUTINE "cubafork"
|
||||
#include "stddecl.h"
|
||||
|
||||
#ifdef HAVE_FORK
|
||||
|
||||
#include "sock.h"
|
||||
|
||||
#define MINCORES 1
|
||||
/*#define MINCORES 2*/
|
||||
|
||||
typedef struct {
|
||||
number n, m, i;
|
||||
VES_ONLY(count iter;)
|
||||
DIV_ONLY(int phase SHM_ONLY(, shmid);)
|
||||
} Slice;
|
||||
extern coreinit cubafun_;
|
||||
extern int cubaverb_;
|
||||
extern corespec cubaworkers_;
|
||||
|
||||
workerini cubaini;
|
||||
/*********************************************************************/
|
||||
|
||||
#if defined HAVE_SHMGET && (defined SUAVE || defined DIVONNE)
|
||||
#define FRAMECOPY
|
||||
#endif
|
||||
static inline void Child(cint fd, cint core)
|
||||
{
|
||||
dispatch d;
|
||||
|
||||
#ifdef DEBUG
|
||||
#define TERM_RED "\e[31m"
|
||||
#define TERM_BLUE "\e[34m"
|
||||
#define TERM_RESET "\e[0m\n"
|
||||
#define MASTER(s, ...) \
|
||||
fprintf(stderr, TERM_RED ROUTINE " master %d(%d): " s TERM_RESET, core, getpid(), ##__VA_ARGS__)
|
||||
#define WORKER(s, ...) \
|
||||
fprintf(stderr, TERM_BLUE ROUTINE " worker %d(%d): " s TERM_RESET, core, getpid(), ##__VA_ARGS__)
|
||||
while( readsock(fd, &d, sizeof d) == sizeof d ) {
|
||||
if( d.thissize ) {
|
||||
MemAlloc(d.thisptr, d.thissize);
|
||||
WORKER("reading This (%lu)", d.thissize);
|
||||
readsock(fd, d.thisptr, d.thissize);
|
||||
}
|
||||
WORKER("running %p on fd %d", d.thisptr, fd);
|
||||
d.worker(d.thisptr, d.thissize, core, fd);
|
||||
if( d.thissize ) free(d.thisptr);
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
Extern void SUFFIX(cubafork)(Spin **pspin)
|
||||
{
|
||||
char out[128];
|
||||
int cores, core;
|
||||
fdpid *pfp;
|
||||
Spin *spin;
|
||||
|
||||
VerboseInit();
|
||||
|
||||
EnvInit(cubaworkers_.paccel, "CUBAACCELMAX", 1000);
|
||||
EnvInit(cubaworkers_.pcores, "CUBACORESMAX", 10000);
|
||||
EnvInit(cubaworkers_.naccel, "CUBAACCEL", 0);
|
||||
EnvInit(cubaworkers_.ncores, "CUBACORES", -sysconf(_SC_NPROCESSORS_ONLN));
|
||||
|
||||
#ifdef HAVE_GETLOADAVG
|
||||
if( cubaworkers_.ncores < 0 ) {
|
||||
static int load = uninitialized;
|
||||
if( load == uninitialized ) {
|
||||
double loadavg;
|
||||
getloadavg(&loadavg, 1);
|
||||
load = floor(loadavg);
|
||||
}
|
||||
cubaworkers_.ncores = IMax(-cubaworkers_.ncores - load, 0);
|
||||
}
|
||||
#else
|
||||
#define MASTER(s, ...)
|
||||
#define WORKER(s, ...)
|
||||
cubaworkers_.ncores = abs(cubaworkers_.ncores);
|
||||
#endif
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
#ifndef MSG_WAITALL
|
||||
/* Windows */
|
||||
#define MSG_WAITALL 0
|
||||
#endif
|
||||
|
||||
static inline int readsock(int fd, void *data, size_t n)
|
||||
{
|
||||
ssize_t got;
|
||||
size_t remain = n;
|
||||
do got = recv(fd, data, remain, MSG_WAITALL);
|
||||
while( got > 0 && (data += got, remain -= got) > 0 );
|
||||
return got;
|
||||
}
|
||||
|
||||
static inline int writesock(int fd, const void *data, size_t n)
|
||||
{
|
||||
ssize_t got;
|
||||
size_t remain = n;
|
||||
do got = send(fd, data, remain, MSG_WAITALL);
|
||||
while( got > 0 && (data += got, remain -= got) > 0 );
|
||||
return got;
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
static void DoSample(This *t, number n, creal *x, real *f
|
||||
VES_ONLY(, creal *w, ccount iter))
|
||||
{
|
||||
cint ncores = IMin(t->ncores, n/MINSLICE);
|
||||
|
||||
if( ncores < MINCORES ) DoSampleSerial(t, n, x, f VES_ONLY(, w, iter));
|
||||
else {
|
||||
Slice slice;
|
||||
int core, abort;
|
||||
number nx;
|
||||
char s[128];
|
||||
|
||||
t->neval += n;
|
||||
|
||||
nx = n % ncores;
|
||||
slice.m = slice.n = n/ncores + 1;
|
||||
if( VERBOSE > 2 ) {
|
||||
sprintf(s, "sampling " NUMBER " points each on %d cores",
|
||||
slice.n, ncores);
|
||||
Print(s);
|
||||
cores = cubaworkers_.naccel + cubaworkers_.ncores;
|
||||
if( cores < MINCORES ) {
|
||||
*pspin = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
slice.i = 0;
|
||||
VES_ONLY(slice.iter = iter;)
|
||||
DIV_ONLY(slice.phase = t->phase;)
|
||||
|
||||
#ifdef DIVONNE
|
||||
if( n > t->nframe ) {
|
||||
FrameFree(t, ShmRm(t));
|
||||
t->nframe = n;
|
||||
FrameAlloc(t);
|
||||
}
|
||||
SHM_ONLY(slice.shmid = t->shmid;)
|
||||
#endif
|
||||
|
||||
SHM_ONLY(if( t->shmid != -1 ) {
|
||||
slice.m = n;
|
||||
#ifdef FRAMECOPY
|
||||
VES_ONLY(Copy(t->frame, w, n);)
|
||||
Copy(t->frame + n*NW, x, n*t->ndim);
|
||||
#endif
|
||||
})
|
||||
|
||||
for( core = 0; core < ncores; ++core ) {
|
||||
cint fd = t->child[core];
|
||||
slice.n -= (core == nx);
|
||||
MASTER("sending samples (sli:%lu[+" VES_ONLY(NUMBER "w:%lu+")
|
||||
NUMBER "x:%lu]) to fd %d",
|
||||
sizeof slice, VES_ONLY(slice.n, sizeof *w,)
|
||||
slice.n, t->ndim*sizeof *x, fd);
|
||||
writesock(fd, &slice, sizeof slice);
|
||||
SHM_ONLY(if( t->shmid == -1 )) {
|
||||
VES_ONLY(writesock(fd, w, slice.n*sizeof *w);
|
||||
w += slice.n;)
|
||||
writesock(fd, x, slice.n*t->ndim*sizeof *x);
|
||||
x += slice.n*t->ndim;
|
||||
}
|
||||
slice.i += slice.n;
|
||||
}
|
||||
|
||||
abort = 0;
|
||||
for( core = 0; core < ncores; ++core ) {
|
||||
cint fd = t->child[core];
|
||||
readsock(fd, &slice, sizeof slice);
|
||||
MASTER("reading samples (sli:%lu[+" NUMBER "f:%lu]) from fd %d",
|
||||
sizeof slice, slice.n, t->ncomp*sizeof *f, fd);
|
||||
if( slice.n == -1 ) abort = 1;
|
||||
else SHM_ONLY(if( t->shmid == -1 )) readsock(fd,
|
||||
f + slice.i*t->ncomp, slice.n*t->ncomp*sizeof *f);
|
||||
}
|
||||
if( abort ) longjmp(t->abort, -99);
|
||||
|
||||
#ifdef FRAMECOPY
|
||||
if( t->shmid != -1 )
|
||||
Copy(f, t->frame + slice.m*(NW + t->ndim), slice.m*t->ncomp);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
#ifdef DIVONNE
|
||||
|
||||
static inline int ReadyCore(cThis *t)
|
||||
{
|
||||
fd_set ready;
|
||||
int core, n = 0;
|
||||
|
||||
FD_ZERO(&ready);
|
||||
for( core = 0; core < t->ncores; ++core ) {
|
||||
FD_SET(t->child[core], &ready);
|
||||
n = IMax(n, t->child[core]);
|
||||
}
|
||||
select(n + 1, &ready, NULL, NULL, NULL);
|
||||
|
||||
for( core = 0; core < t->ncores; ++core )
|
||||
if( FD_ISSET(t->child[core], &ready) ) break;
|
||||
|
||||
return core;
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
typedef struct {
|
||||
number neval, neval_opt, neval_cut;
|
||||
count nregions, iregion, retval;
|
||||
} ExploreResult;
|
||||
|
||||
static int Explore(This *t, cint iregion)
|
||||
{
|
||||
csize_t regionsize = RegionSize;
|
||||
Region *region;
|
||||
int ireg = iregion, core = t->running;
|
||||
Vector(Totals, totals, NCOMP);
|
||||
|
||||
if( t->ncores < MINCORES ) return ExploreSerial(t, iregion);
|
||||
|
||||
if( t->running >= ((iregion < 0) ? 1 : t->ncores) ) {
|
||||
cint fd = t->child[core = ReadyCore(t)];
|
||||
ExploreResult res;
|
||||
count comp, succ;
|
||||
|
||||
--t->running;
|
||||
MASTER("reading res + region (res:%lu+reg:%lu) from fd %d",
|
||||
sizeof res, regionsize, fd);
|
||||
readsock(fd, &res, sizeof res);
|
||||
ireg = res.iregion;
|
||||
region = RegionPtr(ireg);
|
||||
succ = ireg + region->next;
|
||||
readsock(fd, region, regionsize);
|
||||
if( --res.nregions > 0 ) {
|
||||
region->next = t->nregions - ireg;
|
||||
EnlargeRegions(t, res.nregions);
|
||||
MASTER("reading regions (%dreg:%lu) from fd %d",
|
||||
res.nregions, regionsize, fd);
|
||||
readsock(fd, RegionPtr(t->nregions), res.nregions*regionsize);
|
||||
t->nregions += res.nregions;
|
||||
|
||||
RegionPtr(t->nregions-1)->next = succ - t->nregions + 1;
|
||||
}
|
||||
|
||||
MASTER("reading totals (tot:%lu) from fd %d",
|
||||
t->ncomp*sizeof(Totals), fd);
|
||||
readsock(fd, totals, t->ncomp*sizeof(Totals));
|
||||
for( comp = 0; comp < t->ncomp; ++comp )
|
||||
t->totals[comp].secondspread =
|
||||
Max(t->totals[comp].secondspread, totals[comp].secondspread);
|
||||
|
||||
t->neval += res.neval;
|
||||
t->neval_opt += res.neval_opt;
|
||||
t->neval_cut += res.neval_cut;
|
||||
|
||||
if( res.retval == -1 ) return -1;
|
||||
}
|
||||
|
||||
if( iregion >= 0 ) {
|
||||
Slice slice;
|
||||
cint fd = t->child[core];
|
||||
slice.n = 0;
|
||||
slice.i = iregion;
|
||||
slice.phase = t->phase;
|
||||
region = RegionPtr(iregion);
|
||||
MASTER("writing region (sli:%lu+sam:%lu+reg:%lu+tot:%lu) to fd %d",
|
||||
sizeof slice, sizeof(Samples), regionsize,
|
||||
t->ncomp*sizeof(Totals), fd);
|
||||
writesock(fd, &slice, sizeof slice);
|
||||
writesock(fd, &t->samples[region->isamples], sizeof(Samples));
|
||||
writesock(fd, region, regionsize);
|
||||
writesock(fd, t->totals, t->ncomp*sizeof(Totals));
|
||||
region->depth = 0;
|
||||
++t->running;
|
||||
}
|
||||
|
||||
return ireg;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
static void DoChild(This *t, cint core, cint fd)
|
||||
{
|
||||
Slice slice;
|
||||
|
||||
#ifdef DIVONNE
|
||||
csize_t regionsize = RegionSize;
|
||||
Vector(Totals, totals, NCOMP);
|
||||
ExploreResult res;
|
||||
|
||||
t->totals = totals;
|
||||
t->ncores = 0; /* no recursive forks */
|
||||
t->size = 2*t->ndim + 2;
|
||||
AllocRegions(t);
|
||||
#endif
|
||||
|
||||
#ifdef SUAVE
|
||||
SHM_ONLY(if( t->shmid == -1 ))
|
||||
MemAlloc(t->frame, t->nframe*SAMPLESIZE);
|
||||
#endif
|
||||
|
||||
if( cubaini.initfun ) cubaini.initfun(cubaini.initarg);
|
||||
|
||||
while( readsock(fd, &slice, sizeof slice) ) {
|
||||
number n = slice.n;
|
||||
DIV_ONLY(t->phase = slice.phase;)
|
||||
if( n > 0 ) {
|
||||
real VES_ONLY(*w,) *x, *f;
|
||||
WORKER("reading samples (sli:%lu[+" VES_ONLY(NUMBER "w:%lu+")
|
||||
NUMBER "x:%lu]) from fd %d",
|
||||
sizeof slice, VES_ONLY(n, sizeof *w,) n, t->ndim*sizeof *x, fd);
|
||||
|
||||
#ifdef DIVONNE
|
||||
if( slice.m > t->nframe ) {
|
||||
FrameFree(t);
|
||||
t->nframe = slice.m;
|
||||
SHM_ONLY(t->shmid = slice.shmid; ShmMap(t) else)
|
||||
MemAlloc(t->frame, t->nframe*SAMPLESIZE);
|
||||
}
|
||||
#endif
|
||||
|
||||
VES_ONLY(w = t->frame;)
|
||||
x = t->frame + slice.m*NW;
|
||||
f = x + slice.m*t->ndim;
|
||||
|
||||
SHM_ONLY(if( t->shmid != -1 ) {
|
||||
VES_ONLY(w += slice.i;)
|
||||
x += slice.i*t->ndim;
|
||||
f += slice.i*t->ncomp;
|
||||
}
|
||||
else) {
|
||||
VES_ONLY(readsock(fd, w, n*sizeof *w);)
|
||||
readsock(fd, x, n*t->ndim*sizeof *x);
|
||||
}
|
||||
|
||||
slice.n |= SampleRaw(t, n, x, f VES_ONLY(, w, slice.iter));
|
||||
WORKER("writing samples (sli:%lu[+" NUMBER "f:%lu]) to fd %d",
|
||||
sizeof slice, slice.n, t->ncomp*sizeof *f, fd);
|
||||
writesock(fd, &slice, sizeof slice);
|
||||
if( SHM_ONLY(t->shmid == -1 &&) slice.n != -1 )
|
||||
writesock(fd, f, slice.n*t->ncomp*sizeof *f);
|
||||
}
|
||||
#ifdef DIVONNE
|
||||
else {
|
||||
Samples *samples, psamples;
|
||||
|
||||
WORKER("reading region (sli:%lu+sam:%lu+reg:%lu+tot:%lu) from fd %d",
|
||||
sizeof slice, sizeof(Samples), regionsize,
|
||||
t->ncomp*sizeof(Totals), fd);
|
||||
readsock(fd, &psamples, sizeof(Samples));
|
||||
readsock(fd, t->region, regionsize);
|
||||
readsock(fd, totals, t->ncomp*sizeof(Totals));
|
||||
t->nregions = 1;
|
||||
t->neval = t->neval_opt = t->neval_cut = 0;
|
||||
|
||||
samples = &t->samples[RegionPtr(0)->isamples];
|
||||
if( psamples.n != samples->n ) {
|
||||
SamplesFree(samples);
|
||||
*samples = psamples;
|
||||
SamplesAlloc(t, samples);
|
||||
}
|
||||
|
||||
res.retval = ExploreSerial(t, 0);
|
||||
res.neval = t->neval;
|
||||
res.neval_opt = t->neval_opt;
|
||||
res.neval_cut = t->neval_cut;
|
||||
res.nregions = t->nregions;
|
||||
res.iregion = slice.i;
|
||||
WORKER("writing regions (res:%lu+%dreg:%lu+tot:%lu) to fd %d",
|
||||
sizeof res, t->nregions, regionsize,
|
||||
t->ncomp*sizeof(Totals), fd);
|
||||
writesock(fd, &res, sizeof res);
|
||||
writesock(fd, t->region, t->nregions*regionsize);
|
||||
writesock(fd, totals, t->ncomp*sizeof(Totals));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
WORKER("wrapping up");
|
||||
if( cubaini.exitfun ) cubaini.exitfun(cubaini.exitarg);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
#ifdef HAVE_GETLOADAVG
|
||||
double cubaloadavg_;
|
||||
#endif
|
||||
|
||||
static inline void ForkCores(This *t)
|
||||
{
|
||||
int core;
|
||||
char s[128];
|
||||
cchar *env = getenv("CUBACORES");
|
||||
|
||||
t->ncores = env ? atoi(env) : sysconf(_SC_NPROCESSORS_ONLN);
|
||||
#ifdef HAVE_GETLOADAVG
|
||||
if( env == NULL || t->ncores < 0 ) {
|
||||
if( cubaloadavg_ < 0 ) getloadavg(&cubaloadavg_, 1);
|
||||
t->ncores = abs(t->ncores) - floor(cubaloadavg_);
|
||||
}
|
||||
#endif
|
||||
|
||||
DIV_ONLY(t->running = 0;)
|
||||
|
||||
if( t->ncores < MINCORES ) return;
|
||||
if( VERBOSE ) {
|
||||
sprintf(s, "using %d cores via "
|
||||
if( cubaverb_ ) {
|
||||
sprintf(out, "using %d cores %d accelerators via "
|
||||
#ifdef HAVE_SHMGET
|
||||
"shared memory",
|
||||
#else
|
||||
"pipes",
|
||||
#endif
|
||||
t->ncores);
|
||||
Print(s);
|
||||
cubaworkers_.ncores, cubaworkers_.naccel);
|
||||
Print(out);
|
||||
}
|
||||
|
||||
fflush(NULL); /* make sure all buffers are flushed,
|
||||
or else buffered content will be written
|
||||
out multiply, at each child's exit(0) */
|
||||
|
||||
Alloc(t->child, t->ncores);
|
||||
for( core = 0; core < t->ncores; ++core ) {
|
||||
MemAlloc(spin, sizeof *spin + cores*sizeof *spin->fp);
|
||||
spin->spec = cubaworkers_;
|
||||
pfp = spin->fp;
|
||||
for( core = -spin->spec.naccel; core < spin->spec.ncores; ++core ) {
|
||||
int fd[2];
|
||||
pid_t pid;
|
||||
//as35 the next two if's fix the crash when compiling with -DNDEBUG
|
||||
if (socketpair(AF_LOCAL, SOCK_STREAM, 0, fd) == -1)
|
||||
assert(0);
|
||||
if ((pid = fork()) == -1)
|
||||
assert(0);
|
||||
/*//as35 see comment just above
|
||||
assert(
|
||||
socketpair(AF_LOCAL, SOCK_STREAM, 0, fd) != -1 &&
|
||||
(pid = fork()) != -1 );
|
||||
*/
|
||||
if( pid == 0 ) {
|
||||
close(fd[0]);
|
||||
DoChild(t, core, fd[1]);
|
||||
free(spin);
|
||||
Child(fd[1], core);
|
||||
exit(0);
|
||||
}
|
||||
MASTER("forked pid %d pipe %d(master) -> %d(worker)",
|
||||
pid, fd[0], fd[1]);
|
||||
close(fd[1]);
|
||||
t->child[core] = fd[0];
|
||||
pfp->fd = fd[0];
|
||||
pfp->pid = pid;
|
||||
++pfp;
|
||||
}
|
||||
|
||||
*pspin = spin;
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
static inline void WaitCores(cThis *t)
|
||||
Extern void SUFFIX(cubawait)(Spin **pspin)
|
||||
{
|
||||
if( t->ncores >= MINCORES ) {
|
||||
int core;
|
||||
pid_t pid;
|
||||
for( core = 0; core < t->ncores; ++core ) {
|
||||
MASTER("closing fd %d", t->child[core]);
|
||||
close(t->child[core]);
|
||||
int cores, core, status;
|
||||
Spin *spin;
|
||||
|
||||
MasterExit();
|
||||
|
||||
if( Invalid(pspin) || (spin = *pspin) == NULL ) return;
|
||||
|
||||
cores = spin->spec.naccel + spin->spec.ncores;
|
||||
|
||||
for( core = 0; core < cores; ++core ) {
|
||||
MASTER("closing fd %d", spin->fp[core].fd);
|
||||
close(spin->fp[core].fd);
|
||||
}
|
||||
free(t->child);
|
||||
for( core = 0; core < t->ncores; ++core ) {
|
||||
|
||||
#ifdef KILL_WORKERS
|
||||
for( core = 0; core < cores; ++core ) {
|
||||
MASTER("killing pid %d", spin->fp[core].pid);
|
||||
kill(spin->fp[core].pid, SIGKILL);
|
||||
}
|
||||
#endif
|
||||
|
||||
for( core = 0; core < cores; ++core ) {
|
||||
DEB_ONLY(pid_t pid;)
|
||||
MASTER("waiting for child");
|
||||
wait(&pid);
|
||||
MASTER("pid %d terminated", pid);
|
||||
}
|
||||
DEB_ONLY(pid =) wait(&status);
|
||||
MASTER("pid %d terminated with exit code %d", pid, status);
|
||||
}
|
||||
|
||||
free(spin);
|
||||
*pspin = NULL;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
Extern void SUFFIX(cubafork)(Spin **pspin) {}
|
||||
|
||||
Extern void SUFFIX(cubawait)(Spin **pspin)
|
||||
{
|
||||
MasterExit();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
58
src/external/libCuba/src/common/Global.c
vendored
Normal file
58
src/external/libCuba/src/common/Global.c
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
/*
|
||||
Global.c
|
||||
set global vars
|
||||
by Thomas Hahn
|
||||
last modified 21 Jul 14 th
|
||||
*/
|
||||
|
||||
|
||||
#include "stddecl.h"
|
||||
|
||||
|
||||
coreinit cubafun_;
|
||||
extern int cubaverb_;
|
||||
|
||||
#ifdef HAVE_FORK
|
||||
extern corespec cubaworkers_;
|
||||
#endif
|
||||
|
||||
|
||||
Extern void SUFFIX(cubaverbose)(cint verb)
|
||||
{
|
||||
cubaverb_ = verb;
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
Extern void SUFFIX(cubacores)(cint n, cint p)
|
||||
{
|
||||
#ifdef HAVE_FORK
|
||||
cubaworkers_.ncores = n;
|
||||
cubaworkers_.pcores = p;
|
||||
#endif
|
||||
}
|
||||
|
||||
Extern void SUFFIX(cubaaccel)(cint n, cint p)
|
||||
{
|
||||
#ifdef HAVE_FORK
|
||||
cubaworkers_.naccel = n;
|
||||
cubaworkers_.paccel = p;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
Extern void SUFFIX(cubainit)(subroutine f, void *arg)
|
||||
{
|
||||
cubafun_.initfun = f;
|
||||
cubafun_.initarg = arg;
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
Extern void SUFFIX(cubaexit)(subroutine f, void *arg)
|
||||
{
|
||||
cubafun_.exitfun = f;
|
||||
cubafun_.exitarg = arg;
|
||||
}
|
||||
|
22
src/external/libCuba/src/common/MSample.c
vendored
22
src/external/libCuba/src/common/MSample.c
vendored
@ -3,7 +3,7 @@
|
||||
the sampling routine for the
|
||||
Mathematica versions of the Cuba routines
|
||||
by Thomas Hahn
|
||||
last modified 19 Mar 12 th
|
||||
last modified 13 Mar 15 th
|
||||
*/
|
||||
|
||||
|
||||
@ -11,20 +11,20 @@ static void DoSample(This *t, cnumber n, real *x, real *f
|
||||
VES_ONLY(, real *w, ccount iter))
|
||||
{
|
||||
real *mma_f;
|
||||
long mma_n;
|
||||
int mma_n;
|
||||
|
||||
if( MLAbort ) longjmp(t->abort, -99);
|
||||
|
||||
MLPutFunction(stdlink, "EvaluatePacket", 1);
|
||||
MLPutFunction(stdlink, "Cuba`" ROUTINE "`sample", 1 VES_ONLY(+2) DIV_ONLY(+1));
|
||||
MLPutRealList(stdlink, x, n*t->ndim);
|
||||
VES_ONLY(MLPutRealList(stdlink, w, n);
|
||||
MLPutRealxList(stdlink, x, n*t->ndim);
|
||||
VES_ONLY(MLPutRealxList(stdlink, w, n);
|
||||
MLPutInteger(stdlink, iter);)
|
||||
DIV_ONLY(MLPutInteger(stdlink, t->phase);)
|
||||
MLEndPacket(stdlink);
|
||||
|
||||
MLNextPacket(stdlink);
|
||||
if( !MLGetRealList(stdlink, &mma_f, &mma_n) ) {
|
||||
if( !MLGetRealxList(stdlink, &mma_f, &mma_n) ) {
|
||||
MLClearError(stdlink);
|
||||
MLNewPacket(stdlink);
|
||||
longjmp(t->abort, -99);
|
||||
@ -33,12 +33,12 @@ static void DoSample(This *t, cnumber n, real *x, real *f
|
||||
t->neval += mma_n;
|
||||
|
||||
if( mma_n != n*t->ncomp ) {
|
||||
MLDisownRealList(stdlink, mma_f, mma_n);
|
||||
MLReleaseRealxList(stdlink, mma_f, mma_n);
|
||||
longjmp(t->abort, -3);
|
||||
}
|
||||
|
||||
Copy(f, mma_f, n*t->ncomp);
|
||||
MLDisownRealList(stdlink, mma_f, mma_n);
|
||||
MLReleaseRealxList(stdlink, mma_f, mma_n);
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
@ -50,16 +50,16 @@ static count SampleExtra(This *t, cBounds *b)
|
||||
{
|
||||
count n, nget;
|
||||
real *mma_f;
|
||||
long mma_n;
|
||||
int mma_n;
|
||||
|
||||
MLPutFunction(stdlink, "EvaluatePacket", 1);
|
||||
MLPutFunction(stdlink, "Cuba`Divonne`findpeak", 2);
|
||||
MLPutRealList(stdlink, (real *)b, 2*t->ndim);
|
||||
MLPutRealxList(stdlink, (real *)b, 2*t->ndim);
|
||||
MLPutInteger(stdlink, t->phase);
|
||||
MLEndPacket(stdlink);
|
||||
|
||||
MLNextPacket(stdlink);
|
||||
if( !MLGetRealList(stdlink, &mma_f, &mma_n) ) {
|
||||
if( !MLGetRealxList(stdlink, &mma_f, &mma_n) ) {
|
||||
MLClearError(stdlink);
|
||||
MLNewPacket(stdlink);
|
||||
longjmp(t->abort, -99);
|
||||
@ -73,7 +73,7 @@ static count SampleExtra(This *t, cBounds *b)
|
||||
Copy(t->fextra, mma_f + nget*t->ndim, n*t->ncomp);
|
||||
}
|
||||
|
||||
MLDisownRealList(stdlink, mma_f, mma_n);
|
||||
MLReleaseRealxList(stdlink, mma_f, mma_n);
|
||||
|
||||
return n;
|
||||
}
|
||||
|
10
src/external/libCuba/src/common/Makefile.am
vendored
10
src/external/libCuba/src/common/Makefile.am
vendored
@ -1,12 +1,14 @@
|
||||
## Process this file with automake to create Makefile.in
|
||||
|
||||
c_sources = WorkerIni.c
|
||||
c_sources = \
|
||||
Global.c \
|
||||
Data.c
|
||||
|
||||
AM_CPPFLAGS = -I. -I.. -I../common -DNOUNDERSCORE
|
||||
AM_CFLAGS = $(LOCAL_CUBA_LIB_CFLAGS)
|
||||
AM_LDFLAGS = $(LOCAL_LIB_LDFLAGS)
|
||||
|
||||
noinst_LTLIBRARIES = libworkerini.la
|
||||
noinst_LTLIBRARIES = libcommon.la
|
||||
|
||||
libworkerini_la_SOURCES = $(c_sources)
|
||||
libworkerini_la_LDFLAGS = $(AM_LDFLAGS)
|
||||
libcommon_la_SOURCES = $(c_sources)
|
||||
libcommon_la_LDFLAGS = $(AM_LDFLAGS)
|
||||
|
441
src/external/libCuba/src/common/Parallel.c
vendored
Normal file
441
src/external/libCuba/src/common/Parallel.c
vendored
Normal file
@ -0,0 +1,441 @@
|
||||
/*
|
||||
Parallel.c
|
||||
the parallel sampling routine
|
||||
for the C versions of the Cuba routines
|
||||
by Thomas Hahn
|
||||
last modified 23 Apr 15 th
|
||||
*/
|
||||
|
||||
#include "sock.h"
|
||||
|
||||
#define MINSLICE 10
|
||||
#define MINCORES 1
|
||||
/*#define MINCORES 2*/
|
||||
|
||||
typedef struct {
|
||||
number n, m, i;
|
||||
VES_ONLY(count iter;)
|
||||
DIV_ONLY(int phase SHM_ONLY(, shmid);)
|
||||
} Slice;
|
||||
|
||||
#if defined HAVE_SHMGET && (defined SUAVE || defined DIVONNE)
|
||||
#define FRAMECOPY
|
||||
#endif
|
||||
|
||||
Extern void SUFFIX(cubafork)(Spin **);
|
||||
Extern void SUFFIX(cubawait)(Spin **);
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
static inline void DoSampleParallel(This *t, number n, creal *x, real *f
|
||||
VES_ONLY(, creal *w, ccount iter))
|
||||
{
|
||||
char out[128];
|
||||
Slice slice, rslice;
|
||||
fd_set ready;
|
||||
int core, abort, running = 0;
|
||||
const fdpid *pfp;
|
||||
Spin *spin = t->spin;
|
||||
cint paccel = spin->spec.paccel;
|
||||
cint naccel = IMin(spin->spec.naccel, (n + paccel - 1)/IMax(paccel, 1));
|
||||
cnumber nrest = IDim(n - naccel*paccel);
|
||||
cint ncores = IMin(spin->spec.ncores, nrest/MINSLICE);
|
||||
number pcores = IMin(spin->spec.pcores, nrest/IMax(ncores, 1));
|
||||
number nx = nrest - ncores*pcores;
|
||||
if( nx >= ncores ) nx = 0;
|
||||
|
||||
t->neval += n;
|
||||
|
||||
if( VERBOSE > 2 ) {
|
||||
sprintf(out, "sampling " NUMBER " points each on %d cores",
|
||||
pcores, ncores);
|
||||
Print(out);
|
||||
}
|
||||
|
||||
slice.n = paccel;
|
||||
slice.m = IMax(slice.n, pcores);
|
||||
slice.i = 0;
|
||||
VES_ONLY(slice.iter = iter;)
|
||||
DIV_ONLY(slice.phase = t->phase;)
|
||||
|
||||
#ifdef DIVONNE
|
||||
if( n > t->nframe ) {
|
||||
FrameFree(t, Master);
|
||||
t->nframe = n;
|
||||
FrameAlloc(t, Master);
|
||||
}
|
||||
SHM_ONLY(slice.shmid = t->shmid;)
|
||||
#endif
|
||||
|
||||
SHM_ONLY(if( t->shmid != -1 ) {
|
||||
slice.m = n;
|
||||
#ifdef FRAMECOPY
|
||||
VES_ONLY(Copy(t->frame, w, n);)
|
||||
Copy(t->frame + n*NW, x, n*t->ndim);
|
||||
#endif
|
||||
})
|
||||
|
||||
#define PutSamples(fd) do { \
|
||||
slice.n = IMin(slice.n, n); \
|
||||
MASTER("sending samples (sli:%lu[+" VES_ONLY(NUMBER "w:%lu+") \
|
||||
NUMBER "x:%lu]) to fd %d", \
|
||||
sizeof slice, VES_ONLY(slice.n, sizeof *w,) \
|
||||
slice.n, t->ndim*sizeof *x, fd); \
|
||||
writesock(fd, &slice, sizeof slice); \
|
||||
SHM_ONLY(if( t->shmid == -1 )) { \
|
||||
VES_ONLY(writesock(fd, w, slice.n*sizeof *w); \
|
||||
w += slice.n;) \
|
||||
writesock(fd, x, slice.n*t->ndim*sizeof *x); \
|
||||
x += slice.n*t->ndim; \
|
||||
} \
|
||||
slice.i += slice.n; \
|
||||
n -= slice.n; \
|
||||
++running; \
|
||||
} while( 0 )
|
||||
|
||||
#define GetSamples(fd) do { \
|
||||
readsock(fd, &rslice, sizeof rslice); \
|
||||
MASTER("reading samples (sli:%lu[+" NUMBER "f:%lu]) from fd %d", \
|
||||
sizeof rslice, rslice.n, t->ncomp*sizeof *f, fd); \
|
||||
if( rslice.n == -1 ) abort = 1; \
|
||||
else SHM_ONLY(if( t->shmid == -1 )) \
|
||||
readsock(fd, f + rslice.i*t->ncomp, rslice.n*t->ncomp*sizeof *f); \
|
||||
--running; \
|
||||
} while( 0 )
|
||||
|
||||
++pcores;
|
||||
pfp = spin->fp;
|
||||
for( core = -naccel; n && core < ncores; ++core ) {
|
||||
cint fd = pfp++->fd;
|
||||
pcores -= (core == nx);
|
||||
slice.n = (core < 0) ? paccel : pcores;
|
||||
PutSamples(fd);
|
||||
}
|
||||
|
||||
abort = 0;
|
||||
|
||||
while( running ) {
|
||||
int fdmax = 0;
|
||||
|
||||
FD_ZERO(&ready);
|
||||
pfp = spin->fp;
|
||||
for( core = -naccel; core < ncores; ++core ) {
|
||||
cint fd = pfp++->fd;
|
||||
FD_SET(fd, &ready);
|
||||
fdmax = IMax(fdmax, fd);
|
||||
}
|
||||
fdmax = select(fdmax + 1, &ready, NULL, NULL, NULL);
|
||||
|
||||
pfp = spin->fp;
|
||||
for( core = -naccel; core < ncores; ++core ) {
|
||||
cint fd = pfp++->fd;
|
||||
if( FD_ISSET(fd, &ready) ) {
|
||||
GetSamples(fd);
|
||||
if( abort ) break;
|
||||
if( n ) PutSamples(fd);
|
||||
if( --fdmax == 0 ) break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( abort ) longjmp(t->abort, -99);
|
||||
|
||||
#ifdef FRAMECOPY
|
||||
if( t->shmid != -1 )
|
||||
Copy(f, t->frame + slice.m*(NW + t->ndim), slice.m*t->ncomp);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
static void DoSample(This *t, number n, creal *x, real *f
|
||||
VES_ONLY(, creal *w, ccount iter))
|
||||
{
|
||||
if( t->spin == NULL ||
|
||||
t->spin->spec.ncores + t->spin->spec.naccel < MINCORES ||
|
||||
n < MINCORES*MINSLICE )
|
||||
DoSampleSerial(t, n, x, f VES_ONLY(, w, iter));
|
||||
else
|
||||
DoSampleParallel(t, n, x, f VES_ONLY(, w, iter));
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
#ifdef DIVONNE
|
||||
|
||||
typedef struct {
|
||||
number neval, neval_opt, neval_cut;
|
||||
count nregions, iregion, retval;
|
||||
} ExploreResult;
|
||||
|
||||
static inline int ExploreParallel(This *t, cint iregion)
|
||||
{
|
||||
Vector(Totals, totals, NCOMP);
|
||||
csize_t regionsize = RegionSize;
|
||||
Region *region;
|
||||
Spin *spin = t->spin;
|
||||
cint cores = spin->spec.naccel + spin->spec.ncores;
|
||||
int core = t->running;
|
||||
int ireg = iregion;
|
||||
|
||||
if( core >= ((iregion < 0) ? 1 : cores) ) {
|
||||
fd_set ready;
|
||||
int fd = 0, fdmax = 0;
|
||||
ExploreResult res;
|
||||
count comp, succ;
|
||||
|
||||
FD_ZERO(&ready);
|
||||
for( core = 0; core < cores; ++core ) {
|
||||
fd = spin->fp[core].fd;
|
||||
FD_SET(fd, &ready);
|
||||
fdmax = IMax(fd, fdmax);
|
||||
}
|
||||
select(fdmax + 1, &ready, NULL, NULL, NULL);
|
||||
|
||||
for( core = 0; core < cores; ++core ) {
|
||||
fd = spin->fp[core].fd;
|
||||
if( FD_ISSET(fd, &ready) ) break;
|
||||
}
|
||||
|
||||
--t->running;
|
||||
MASTER("reading res + region (res:%lu+reg:%lu) from fd %d",
|
||||
sizeof res, regionsize, fd);
|
||||
readsock(fd, &res, sizeof res);
|
||||
ireg = res.iregion;
|
||||
region = RegionPtr(ireg);
|
||||
succ = ireg + region->next;
|
||||
readsock(fd, region, regionsize);
|
||||
if( --res.nregions > 0 ) {
|
||||
region->next = t->nregions - ireg;
|
||||
EnlargeRegions(t, res.nregions);
|
||||
MASTER("reading regions (%dreg:%lu) from fd %d",
|
||||
res.nregions, regionsize, fd);
|
||||
readsock(fd, RegionPtr(t->nregions), res.nregions*regionsize);
|
||||
t->nregions += res.nregions;
|
||||
|
||||
RegionPtr(t->nregions-1)->next = succ - t->nregions + 1;
|
||||
}
|
||||
|
||||
MASTER("reading totals (tot:%lu) from fd %d",
|
||||
t->ncomp*sizeof(Totals), fd);
|
||||
readsock(fd, totals, t->ncomp*sizeof(Totals));
|
||||
for( comp = 0; comp < t->ncomp; ++comp )
|
||||
t->totals[comp].secondspread =
|
||||
Max(t->totals[comp].secondspread, totals[comp].secondspread);
|
||||
|
||||
t->neval += res.neval;
|
||||
t->neval_opt += res.neval_opt;
|
||||
t->neval_cut += res.neval_cut;
|
||||
|
||||
if( res.retval == -1 ) return -1;
|
||||
}
|
||||
|
||||
if( iregion >= 0 ) {
|
||||
Slice slice;
|
||||
cint fd = spin->fp[core].fd;
|
||||
slice.n = 0;
|
||||
slice.i = iregion;
|
||||
slice.phase = t->phase;
|
||||
region = RegionPtr(iregion);
|
||||
MASTER("writing region (sli:%lu+sam:%lu+reg:%lu+tot:%lu) to fd %d",
|
||||
sizeof slice, sizeof(Samples), regionsize,
|
||||
t->ncomp*sizeof(Totals), fd);
|
||||
writesock(fd, &slice, sizeof slice);
|
||||
writesock(fd, &t->samples[region->isamples], sizeof(Samples));
|
||||
writesock(fd, region, regionsize);
|
||||
writesock(fd, t->totals, t->ncomp*sizeof(Totals));
|
||||
region->depth = 0;
|
||||
++t->running;
|
||||
}
|
||||
|
||||
return ireg;
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
static int Explore(This *t, cint iregion)
|
||||
{
|
||||
if( t->spin == NULL ||
|
||||
t->spin->spec.ncores + t->spin->spec.naccel < MINCORES )
|
||||
return ExploreSerial(t, iregion);
|
||||
else
|
||||
return ExploreParallel(t, iregion);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
static void Worker(This *t, const size_t alloc, cint core, cint fd)
|
||||
{
|
||||
Slice slice;
|
||||
|
||||
if( readsock(fd, &slice, sizeof slice) == sizeof slice &&
|
||||
slice.n != -1 ) {
|
||||
#ifdef DIVONNE
|
||||
csize_t regionsize = RegionSize;
|
||||
Vector(Totals, totals, NCOMP);
|
||||
Spin spin = {{0, 0, 0, 0}}; /* no recursive forks */
|
||||
|
||||
t->totals = totals;
|
||||
t->spin = &spin;
|
||||
t->size = 2*t->ndim + 2;
|
||||
AllocRegions(t);
|
||||
#endif
|
||||
|
||||
if( alloc ) {
|
||||
#ifndef DIVONNE
|
||||
FrameAlloc(t, Worker);
|
||||
#endif
|
||||
#if defined DIVONNE || defined CUHRE
|
||||
RuleAlloc(t);
|
||||
#endif
|
||||
}
|
||||
#ifdef SUAVE
|
||||
else SHM_ONLY(if( t->shmid == -1 ))
|
||||
MemAlloc(t->frame, t->nframe*SAMPLESIZE);
|
||||
#endif
|
||||
|
||||
if( cubafun_.initfun ) cubafun_.initfun(cubafun_.initarg, &core);
|
||||
|
||||
do {
|
||||
number n = slice.n;
|
||||
WORKER("received slice.n = " NUMBER, n);
|
||||
DIV_ONLY(t->phase = slice.phase;)
|
||||
|
||||
if( n > 0 ) {
|
||||
real VES_ONLY(*w,) *x, *f;
|
||||
WORKER("reading samples (sli:%lu[+" VES_ONLY(NUMBER "w:%lu+")
|
||||
NUMBER "x:%lu]) from fd %d",
|
||||
sizeof slice, VES_ONLY(n, sizeof *w,) n, t->ndim*sizeof *x, fd);
|
||||
|
||||
#ifdef DIVONNE
|
||||
if( slice.m > t->nframe ) {
|
||||
FrameFree(t, Worker);
|
||||
t->nframe = slice.m;
|
||||
SHM_ONLY(t->shmid = slice.shmid;)
|
||||
FrameAlloc(t, Worker);
|
||||
}
|
||||
#endif
|
||||
|
||||
VES_ONLY(w = t->frame;)
|
||||
x = t->frame + slice.m*NW;
|
||||
f = x + slice.m*t->ndim;
|
||||
|
||||
SHM_ONLY(if( t->shmid != -1 ) {
|
||||
VES_ONLY(w += slice.i;)
|
||||
x += slice.i*t->ndim;
|
||||
f += slice.i*t->ncomp;
|
||||
}
|
||||
else) {
|
||||
VES_ONLY(readsock(fd, w, n*sizeof *w);)
|
||||
readsock(fd, x, n*t->ndim*sizeof *x);
|
||||
}
|
||||
|
||||
slice.n |= SampleRaw(t, n, x, f, core VES_ONLY(, w, slice.iter));
|
||||
WORKER("writing samples (sli:%lu[+" NUMBER "f:%lu]) to fd %d",
|
||||
sizeof slice, slice.n, t->ncomp*sizeof *f, fd);
|
||||
writesock(fd, &slice, sizeof slice);
|
||||
if( SHM_ONLY(t->shmid == -1 &&) slice.n != -1 )
|
||||
writesock(fd, f, slice.n*t->ncomp*sizeof *f);
|
||||
}
|
||||
#ifdef DIVONNE
|
||||
else {
|
||||
Samples *samples, psamples;
|
||||
ExploreResult res;
|
||||
|
||||
WORKER("reading region (sli:%lu+sam:%lu+reg:%lu+tot:%lu) from fd %d",
|
||||
sizeof slice, sizeof psamples, regionsize,
|
||||
t->ncomp*sizeof(Totals), fd);
|
||||
readsock(fd, &psamples, sizeof psamples);
|
||||
readsock(fd, t->region, regionsize);
|
||||
readsock(fd, totals, t->ncomp*sizeof(Totals));
|
||||
t->nregions = 1;
|
||||
t->neval = t->neval_opt = t->neval_cut = 0;
|
||||
|
||||
samples = &t->samples[RegionPtr(0)->isamples];
|
||||
if( psamples.n != samples->n ) {
|
||||
SamplesFree(samples);
|
||||
*samples = psamples;
|
||||
SamplesAlloc(t, samples);
|
||||
}
|
||||
|
||||
res.retval = ExploreSerial(t, 0);
|
||||
res.neval = t->neval;
|
||||
res.neval_opt = t->neval_opt;
|
||||
res.neval_cut = t->neval_cut;
|
||||
res.nregions = t->nregions;
|
||||
res.iregion = slice.i;
|
||||
WORKER("writing regions (res:%lu+%dreg:%lu+tot:%lu) to fd %d",
|
||||
sizeof res, t->nregions, regionsize,
|
||||
t->ncomp*sizeof(Totals), fd);
|
||||
writesock(fd, &res, sizeof res);
|
||||
writesock(fd, t->region, t->nregions*regionsize);
|
||||
writesock(fd, totals, t->ncomp*sizeof(Totals));
|
||||
}
|
||||
#endif
|
||||
} while( readsock(fd, &slice, sizeof slice) == sizeof slice &&
|
||||
slice.n != -1 );
|
||||
|
||||
if( cubafun_.exitfun ) cubafun_.exitfun(cubafun_.exitarg, &core);
|
||||
|
||||
#if defined DIVONNE || defined CUHRE
|
||||
RuleFree(t);
|
||||
#endif
|
||||
|
||||
FrameFree(t, Worker);
|
||||
|
||||
#ifdef DIVONNE
|
||||
free(t->region);
|
||||
#endif
|
||||
}
|
||||
|
||||
WORKER("worker wrapping up");
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
static inline void ForkCores(This *t)
|
||||
{
|
||||
dispatch d;
|
||||
const fdpid *pfp;
|
||||
int ncores, core;
|
||||
|
||||
DIV_ONLY(t->running = 0;)
|
||||
|
||||
d.worker = Worker;
|
||||
d.thisptr = t;
|
||||
d.thissize = sizeof *t;
|
||||
|
||||
if( t->spin == NULL ) {
|
||||
SUFFIX(cubafork)(&t->spin);
|
||||
if( t->spin == NULL ) return;
|
||||
d.thissize = 0;
|
||||
}
|
||||
|
||||
pfp = t->spin->fp;
|
||||
ncores = t->spin->spec.ncores;
|
||||
for( core = -t->spin->spec.naccel; core < ncores; ++core ) {
|
||||
cint fd = pfp++->fd;
|
||||
writesock(fd, &d, sizeof d);
|
||||
if( d.thissize ) writesock(fd, t, d.thissize);
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
static inline void WaitCores(This *t, Spin **pspin)
|
||||
{
|
||||
if( Invalid(pspin) ) SUFFIX(cubawait)(&t->spin);
|
||||
else {
|
||||
Slice slice = { .n = -1 };
|
||||
cint cores = t->spin->spec.naccel + t->spin->spec.ncores;
|
||||
const fdpid *pfp = t->spin->fp;
|
||||
int core;
|
||||
for( core = 0; core < cores; ++core )
|
||||
writesock(pfp[core].fd, &slice, sizeof slice);
|
||||
*pspin = t->spin;
|
||||
MasterExit();
|
||||
}
|
||||
}
|
||||
|
21
src/external/libCuba/src/common/Random.c
vendored
21
src/external/libCuba/src/common/Random.c
vendored
@ -1,7 +1,7 @@
|
||||
/*
|
||||
Random.c
|
||||
quasi- and pseudo-random-number generation
|
||||
last modified 7 Aug 13 th
|
||||
last modified 18 Mar 14 th
|
||||
*/
|
||||
|
||||
|
||||
@ -88,14 +88,13 @@ static inline void SobolIni(This *t)
|
||||
299, 1, 3, 3, 9, 9, 25, 107, 39 };
|
||||
|
||||
count dim, bit, nbits;
|
||||
number max, *pini = ini;
|
||||
cnumber nmax = 2*t->maxeval;
|
||||
number *pini = ini, max;
|
||||
|
||||
for( nbits = 0, max = 1; max <= nmax; max <<= 1 ) ++nbits;
|
||||
t->rng.sobol.norm = 1./max;
|
||||
for( nbits = 0, max = t->maxeval; max; max >>= 1 ) ++nbits;
|
||||
t->rng.sobol.norm = ldexp(.5, -nbits);
|
||||
|
||||
for( bit = 0; bit < nbits; ++bit )
|
||||
t->rng.sobol.v[0][bit] = (max >>= 1);
|
||||
for( bit = 0; bit <= nbits; ++bit )
|
||||
t->rng.sobol.v[0][bit] = (number)1 << (nbits - bit);
|
||||
|
||||
for( dim = 1; dim < t->ndim; ++dim ) {
|
||||
number *pv = t->rng.sobol.v[dim], *pvv = pv;
|
||||
@ -103,10 +102,10 @@ static inline void SobolIni(This *t)
|
||||
int inibits = -1, bit;
|
||||
for( j = powers; j; j >>= 1 ) ++inibits;
|
||||
|
||||
memcpy(pv, pini, inibits*sizeof(*pini));
|
||||
memcpy(pv, pini, inibits*sizeof *pini);
|
||||
pini += 8;
|
||||
|
||||
for( bit = inibits; bit < nbits; ++bit ) {
|
||||
for( bit = inibits; bit <= nbits; ++bit ) {
|
||||
number newv = *pvv, j = powers;
|
||||
int b;
|
||||
for( b = 0; b < inibits; ++b ) {
|
||||
@ -117,8 +116,8 @@ static inline void SobolIni(This *t)
|
||||
++pvv;
|
||||
}
|
||||
|
||||
for( bit = 0; bit < nbits - 1; ++bit )
|
||||
pv[bit] <<= nbits - bit - 1;
|
||||
for( bit = 0; bit < nbits; ++bit )
|
||||
pv[bit] <<= nbits - bit;
|
||||
}
|
||||
|
||||
t->rng.sobol.seq = 0;
|
||||
|
37
src/external/libCuba/src/common/WorkerIni.c
vendored
37
src/external/libCuba/src/common/WorkerIni.c
vendored
@ -1,37 +0,0 @@
|
||||
/*
|
||||
WorkerIni.c
|
||||
set/run the init/exit functions for worker processes
|
||||
by Thomas Hahn
|
||||
last modified 6 Sep 12 th
|
||||
*/
|
||||
|
||||
|
||||
#include "stddecl.h"
|
||||
|
||||
extern workerini cubaini;
|
||||
|
||||
Extern void SUFFIX(cubasetinit)(subroutine f, void *arg)
|
||||
{
|
||||
cubaini.initfun = f;
|
||||
cubaini.initarg = arg;
|
||||
}
|
||||
|
||||
|
||||
Extern void SUFFIX(cubasetexit)(subroutine f, void *arg)
|
||||
{
|
||||
cubaini.exitfun = f;
|
||||
cubaini.exitarg = arg;
|
||||
}
|
||||
|
||||
|
||||
Extern void SUFFIX(cubaruninit)()
|
||||
{
|
||||
if( cubaini.initfun ) cubaini.initfun(cubaini.initarg);
|
||||
}
|
||||
|
||||
|
||||
Extern void SUFFIX(cubarunexit)()
|
||||
{
|
||||
if( cubaini.exitfun ) cubaini.exitfun(cubaini.exitarg);
|
||||
}
|
||||
|
65
src/external/libCuba/src/common/sock.h
vendored
Normal file
65
src/external/libCuba/src/common/sock.h
vendored
Normal file
@ -0,0 +1,65 @@
|
||||
/*
|
||||
sock.h
|
||||
socket read/write
|
||||
by Thomas Hahn
|
||||
last modified 27 May 14 th
|
||||
*/
|
||||
|
||||
#include <sys/socket.h>
|
||||
|
||||
#ifdef DEBUG
|
||||
#define TERM_RED "\e[31m"
|
||||
#define TERM_BLUE "\e[34m"
|
||||
#define TERM_RESET "\e[0m\n"
|
||||
#define MASTER(s, ...) \
|
||||
fprintf(stderr, TERM_RED ROUTINE " master %d(%d): " s TERM_RESET, core, getpid(), ##__VA_ARGS__)
|
||||
#define WORKER(s, ...) \
|
||||
fprintf(stderr, TERM_BLUE ROUTINE " worker %d(%d): " s TERM_RESET, core, getpid(), ##__VA_ARGS__)
|
||||
#define DEB_ONLY(...) __VA_ARGS__
|
||||
#else
|
||||
#define MASTER(s, ...)
|
||||
#define WORKER(s, ...)
|
||||
#define DEB_ONLY(...)
|
||||
#endif
|
||||
|
||||
#ifdef LOW_LEVEL_DEBUG
|
||||
#define TERM_GREEN "\e[32m"
|
||||
#define TERM_MAGENTA "\e[35m"
|
||||
#define READ(s, ...) \
|
||||
fprintf(stderr, TERM_GREEN ROUTINE " pid %d: read " s TERM_RESET, getpid(), ##__VA_ARGS__)
|
||||
#define WRITE(s, ...) \
|
||||
fprintf(stderr, TERM_MAGENTA ROUTINE " pid %d: write " s TERM_RESET, getpid(), ##__VA_ARGS__)
|
||||
#else
|
||||
#define READ(s, ...)
|
||||
#define WRITE(s, ...)
|
||||
#endif
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
#ifndef MSG_WAITALL
|
||||
/* Windows */
|
||||
#define MSG_WAITALL 0
|
||||
#endif
|
||||
|
||||
static inline int readsock(cint fd, void *data, csize_t n)
|
||||
{
|
||||
ssize_t got;
|
||||
size_t remain = n;
|
||||
do got = recv(fd, data, remain, MSG_WAITALL);
|
||||
while( got > 0 && (data += got, remain -= got) > 0 );
|
||||
READ("%lu bytes at %p from fd %d", n, data, fd);
|
||||
return got;
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
static inline int writesock(cint fd, const void *data, csize_t n)
|
||||
{
|
||||
ssize_t got;
|
||||
size_t remain = n;
|
||||
do got = send(fd, data, remain, MSG_WAITALL);
|
||||
while( got > 0 && (data += got, remain -= got) > 0 );
|
||||
WRITE("%lu bytes at %p to fd %d", n, data, fd);
|
||||
return got;
|
||||
}
|
||||
|
168
src/external/libCuba/src/common/stddecl.h
vendored
168
src/external/libCuba/src/common/stddecl.h
vendored
@ -1,7 +1,7 @@
|
||||
/*
|
||||
stddecl.h
|
||||
declarations common to all Cuba routines
|
||||
last modified 17 Sep 13 th
|
||||
last modified 23 Apr 15 th
|
||||
*/
|
||||
|
||||
|
||||
@ -12,8 +12,7 @@
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#define _BSD_SOURCE
|
||||
#define _XOPEN_SOURCE
|
||||
#define _DEFAULT_SOURCE
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@ -30,6 +29,7 @@
|
||||
#ifdef HAVE_FORK
|
||||
#include <sys/wait.h>
|
||||
#include <sys/socket.h>
|
||||
#include <signal.h>
|
||||
#ifdef HAVE_SHMGET
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/shm.h>
|
||||
@ -83,10 +83,31 @@ void *alloca (size_t);
|
||||
|
||||
#define SAMPLESIZE (NW + t->ndim + t->ncomp)*sizeof(real)
|
||||
|
||||
|
||||
enum { uninitialized = 0x61627563 };
|
||||
|
||||
#define EnvInit(var, name, default) \
|
||||
if( var == uninitialized ) { \
|
||||
cchar *env = getenv(name); \
|
||||
if( env == NULL ) var = default; \
|
||||
else { \
|
||||
var = atoi(env); \
|
||||
if( cubaverb_ ) { \
|
||||
char out[64]; \
|
||||
sprintf(out, "env " name " = %d", (int)var); \
|
||||
Print(out); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
#define VerboseInit() EnvInit(cubaverb_, "CUBAVERBOSE", 0)
|
||||
#define MaxVerbose(flags) (flags + IDim(IMin(cubaverb_, 3) - ((flags) & 3)))
|
||||
|
||||
#define VERBOSE (t->flags & 3)
|
||||
#define LAST (t->flags & 4)
|
||||
#define SHARPEDGES (t->flags & 8)
|
||||
#define KEEPFILE (t->flags & 16)
|
||||
#define ZAPSTATE (t->flags & 32)
|
||||
#define REGIONS (t->flags & 128)
|
||||
#define RNG (t->flags >> 8)
|
||||
|
||||
@ -120,7 +141,7 @@ void *alloca (size_t);
|
||||
|
||||
#define Zap(d) memset(d, 0, sizeof(d))
|
||||
|
||||
#define MaxErr(avg) Max(t->epsrel*fabs(avg), t->epsabs)
|
||||
#define MaxErr(avg) Max(t->epsrel*fabsx(avg), t->epsabs)
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define mallocset(p, n) (*(void **)&p = malloc(n))
|
||||
@ -157,8 +178,21 @@ void *alloca (size_t);
|
||||
|
||||
#ifdef MLVERSION
|
||||
#define ML_ONLY(...) __VA_ARGS__
|
||||
#define ML_NOT(...)
|
||||
#else
|
||||
#define ML_ONLY(...)
|
||||
#define ML_NOT(...) __VA_ARGS__
|
||||
|
||||
#define CORE_MASTER (int []){32768}
|
||||
#define MasterInit() do if( !cubafun_.init ) { \
|
||||
cubafun_.init = true; \
|
||||
if( cubafun_.initfun ) cubafun_.initfun(cubafun_.initarg, CORE_MASTER); \
|
||||
} while( 0 )
|
||||
#define MasterExit() do if( cubafun_.init ) { \
|
||||
cubafun_.init = false; \
|
||||
if( cubafun_.exitfun ) cubafun_.exitfun(cubafun_.exitarg, CORE_MASTER); \
|
||||
} while( 0 )
|
||||
#define Invalid(s) ((s) == NULL || *(int *)(s) == -1)
|
||||
|
||||
#ifdef HAVE_FORK
|
||||
#undef FORK_ONLY
|
||||
@ -168,37 +202,40 @@ void *alloca (size_t);
|
||||
#undef SHM_ONLY
|
||||
#define SHM_ONLY(...) __VA_ARGS__
|
||||
|
||||
#define ShmMap(t, ...) if( t->shmid != -1 ) { \
|
||||
t->frame = shmat(t->shmid, NULL, 0); \
|
||||
if( t->frame == (void *)-1 ) Abort("shmat"); \
|
||||
__VA_ARGS__ \
|
||||
}
|
||||
|
||||
#define ShmRm(t) shmctl(t->shmid, IPC_RMID, NULL);
|
||||
#define MasterAlloc(t) \
|
||||
t->shmid = shmget(IPC_PRIVATE, t->nframe*SAMPLESIZE, IPC_CREAT | 0600)
|
||||
#define MasterFree(t) shmctl(t->shmid, IPC_RMID, NULL)
|
||||
#define WorkerAlloc(t)
|
||||
#define WorkerFree(r)
|
||||
|
||||
#undef ShmAlloc
|
||||
#define ShmAlloc(t, ...) \
|
||||
t->shmid = shmget(IPC_PRIVATE, t->nframe*SAMPLESIZE, IPC_CREAT | 0600); \
|
||||
ShmMap(t, __VA_ARGS__)
|
||||
#define ShmAlloc(t, who) \
|
||||
who##Alloc(t); \
|
||||
if( t->shmid != -1 ) { \
|
||||
t->frame = shmat(t->shmid, NULL, 0); \
|
||||
if( t->frame == (void *)-1 ) Abort("shmat"); \
|
||||
}
|
||||
|
||||
#undef ShmFree
|
||||
#define ShmFree(t, ...) if( t->shmid != -1 ) { \
|
||||
#define ShmFree(t, who) \
|
||||
if( t->shmid != -1 ) { \
|
||||
shmdt(t->frame); \
|
||||
__VA_ARGS__ \
|
||||
}
|
||||
who##Free(t); \
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define FrameAlloc(t, ...) \
|
||||
SHM_ONLY(ShmAlloc(t, __VA_ARGS__) else) \
|
||||
#define FrameAlloc(t, who) \
|
||||
SHM_ONLY(ShmAlloc(t, who) else) \
|
||||
MemAlloc(t->frame, t->nframe*SAMPLESIZE);
|
||||
|
||||
#define FrameFree(t, ...) DIV_ONLY(if( t->nframe )) { \
|
||||
SHM_ONLY(ShmFree(t, __VA_ARGS__) else) \
|
||||
#define FrameFree(t, who) \
|
||||
DIV_ONLY(if( t->nframe )) { \
|
||||
SHM_ONLY(ShmFree(t, who) else) \
|
||||
free(t->frame); \
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#define StateDecl \
|
||||
@ -219,7 +256,9 @@ struct stat st
|
||||
|
||||
typedef long long int signature_t;
|
||||
|
||||
#define StateSignature(t, i) (0x41425543 + \
|
||||
enum { signature = 0x41425543 };
|
||||
|
||||
#define StateSignature(t, i) (signature + \
|
||||
((signature_t)(i) << 60) + \
|
||||
((signature_t)(t)->ncomp << 48) + \
|
||||
((signature_t)(t)->ndim << 32))
|
||||
@ -306,39 +345,100 @@ typedef const count ccount;
|
||||
#define PREFIX(s) ll##s
|
||||
#define NUMBER "%lld"
|
||||
#define NUMBER7 "%7lld"
|
||||
#define NUMBER_MAX LLONG_MAX
|
||||
typedef long long int number;
|
||||
#else
|
||||
#define PREFIX(s) s
|
||||
#define NUMBER "%d"
|
||||
#define NUMBER7 "%7d"
|
||||
#define NUMBER_MAX INT_MAX
|
||||
typedef int number;
|
||||
#endif
|
||||
typedef const number cnumber;
|
||||
|
||||
#define REAL "%g"
|
||||
#define REALF "%f"
|
||||
typedef /*long*/ double real;
|
||||
/* Switching to long double is not as trivial as it
|
||||
might seem here. sqrt, erf, exp, pow need to be
|
||||
replaced by their long double versions (sqrtl, ...),
|
||||
printf formats need to be updated similarly, and
|
||||
ferrying long doubles to Mathematica is of course
|
||||
quite another matter, too. */
|
||||
#define SHOW(r) (double)(r)
|
||||
/* floating-point numbers are printed with SHOW */
|
||||
|
||||
#if REALSIZE == 16
|
||||
#include <quadmath.h>
|
||||
typedef __float128 real;
|
||||
#define RC(x) x##Q
|
||||
#define sqrtx sqrtq
|
||||
#define expx expq
|
||||
#define powx powq
|
||||
#define erfx erfq
|
||||
#define fabsx fabsq
|
||||
#define ldexpx ldexpq
|
||||
#define REAL_MAX_EXP FLT128_MAX_EXP
|
||||
#define REAL_MAX FLT128_MAX
|
||||
#elif REALSIZE == 10
|
||||
typedef long double real;
|
||||
#define RC(x) x##L
|
||||
#define sqrtx sqrtl
|
||||
#define expx expl
|
||||
#define powx powl
|
||||
#define erfx erfl
|
||||
#define fabsx fabsl
|
||||
#define ldexpx ldexpl
|
||||
#define REAL_MAX_EXP LDBL_MAX_EXP
|
||||
#define REAL_MAX LDBL_MAX
|
||||
#define MLPutRealxList MLPutReal128List
|
||||
#define MLGetRealxList MLGetReal128List
|
||||
#define MLReleaseRealxList MLReleaseReal128List
|
||||
#else
|
||||
typedef double real;
|
||||
#define RC(x) x
|
||||
#define sqrtx sqrt
|
||||
#define expx exp
|
||||
#define powx pow
|
||||
#define erfx erf
|
||||
#define fabsx fabs
|
||||
#define ldexpx ldexp
|
||||
#define REAL_MAX_EXP DBL_MAX_EXP
|
||||
#define REAL_MAX DBL_MAX
|
||||
#define MLPutRealxList MLPutReal64List
|
||||
#define MLGetRealxList MLGetReal64List
|
||||
#define MLReleaseRealxList MLReleaseReal64List
|
||||
#endif
|
||||
|
||||
typedef const real creal;
|
||||
|
||||
typedef void (*subroutine)();
|
||||
typedef void (*subroutine)(void *, cint *);
|
||||
|
||||
typedef struct {
|
||||
subroutine initfun;
|
||||
void *initarg;
|
||||
subroutine exitfun;
|
||||
void *exitarg;
|
||||
} workerini;
|
||||
bool init;
|
||||
} coreinit;
|
||||
|
||||
typedef struct {
|
||||
int ncores, naccel;
|
||||
int pcores, paccel;
|
||||
} corespec;
|
||||
|
||||
typedef struct {
|
||||
int fd, pid;
|
||||
} fdpid;
|
||||
|
||||
typedef struct {
|
||||
corespec spec;
|
||||
fdpid fp[];
|
||||
} Spin;
|
||||
|
||||
|
||||
struct _this;
|
||||
|
||||
typedef struct {
|
||||
void (*worker)(struct _this *, csize_t, cint, cint);
|
||||
struct _this *thisptr;
|
||||
size_t thissize;
|
||||
} dispatch;
|
||||
|
||||
|
||||
typedef unsigned int state_t;
|
||||
|
||||
#define SOBOL_MINDIM 1
|
||||
@ -407,7 +507,7 @@ static inline real Max(creal a, creal b) {
|
||||
}
|
||||
|
||||
static inline real Weight(creal sum, creal sqsum, cnumber n) {
|
||||
creal w = sqrt(sqsum*n);
|
||||
creal w = sqrtx(sqsum*n);
|
||||
return (n - 1)/Max((w + sum)*(w - sum), NOTZERO);
|
||||
}
|
||||
|
||||
@ -452,7 +552,7 @@ static inline void Print(MLCONST char *s)
|
||||
|
||||
#else
|
||||
|
||||
#define Print(s) puts(s); fflush(stdout)
|
||||
#define Print(s) { puts(s); fflush(stdout); }
|
||||
|
||||
#endif
|
||||
|
||||
|
120
src/external/libCuba/src/cuba.h
vendored
120
src/external/libCuba/src/cuba.h
vendored
@ -2,116 +2,122 @@
|
||||
cuba.h
|
||||
Prototypes for the Cuba library
|
||||
this file is part of Cuba
|
||||
last modified 30 Apr 13 th
|
||||
last modified 13 Mar 15 th
|
||||
*/
|
||||
|
||||
typedef double cubareal;
|
||||
|
||||
/* integrand_t is intentionally a minimalistic integrand type.
|
||||
It includes neither the nvec and core arguments nor the
|
||||
extra arguments passed by Vegas/Suave (weight, iter) and
|
||||
Divonne (phase).
|
||||
In most cases, integrand_t is just what you want, otherwise
|
||||
simply use an explicit typecast to integrand_t in the Cuba
|
||||
invocation. */
|
||||
typedef int (*integrand_t)(const int *ndim, const cubareal x[],
|
||||
const int *ncomp, cubareal f[], void *userdata);
|
||||
|
||||
typedef void (*peakfinder_t)(const int *ndim, const cubareal b[],
|
||||
int *n, cubareal x[], void *userdata);
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* NB: Divonne actually passes a fifth argument, a const int *
|
||||
which points to the integration phase. This is used only
|
||||
rarely and most users are confused by the warnings the
|
||||
compiler emits if the `correct' prototype is used. Thus,
|
||||
if you need to access this argument, use an explicit cast
|
||||
to integrand_t when invoking Divonne. */
|
||||
typedef int (*integrand_t)(const int *ndim, const double x[],
|
||||
const int *ncomp, double f[], void *userdata);
|
||||
|
||||
typedef void (*peakfinder_t)(const int *ndim, const double b[],
|
||||
int *n, double x[]);
|
||||
|
||||
void Vegas(const int ndim, const int ncomp,
|
||||
integrand_t integrand, void *userdata,
|
||||
const double epsrel, const double epsabs,
|
||||
integrand_t integrand, void *userdata, const int nvec,
|
||||
const cubareal epsrel, const cubareal epsabs,
|
||||
const int flags, const int seed,
|
||||
const int mineval, const int maxeval,
|
||||
const int nstart, const int nincrease, const int nbatch,
|
||||
const int gridno, const char *statefile,
|
||||
const int gridno, const char *statefile, void *spin,
|
||||
int *neval, int *fail,
|
||||
double integral[], double error[], double prob[]);
|
||||
cubareal integral[], cubareal error[], cubareal prob[]);
|
||||
|
||||
void llVegas(const int ndim, const int ncomp,
|
||||
integrand_t integrand, void *userdata,
|
||||
const double epsrel, const double epsabs,
|
||||
integrand_t integrand, void *userdata, const long long int nvec,
|
||||
const cubareal epsrel, const cubareal epsabs,
|
||||
const int flags, const int seed,
|
||||
const long long int mineval, const long long int maxeval,
|
||||
const long long int nstart, const long long int nincrease,
|
||||
const long long int nbatch,
|
||||
const int gridno, const char *statefile,
|
||||
const int gridno, const char *statefile, void *spin,
|
||||
long long int *neval, int *fail,
|
||||
double integral[], double error[], double prob[]);
|
||||
cubareal integral[], cubareal error[], cubareal prob[]);
|
||||
|
||||
void Suave(const int ndim, const int ncomp,
|
||||
integrand_t integrand, void *userdata,
|
||||
const double epsrel, const double epsabs,
|
||||
integrand_t integrand, void *userdata, const int nvec,
|
||||
const cubareal epsrel, const cubareal epsabs,
|
||||
const int flags, const int seed,
|
||||
const int mineval, const int maxeval,
|
||||
const int nnew, const double flatness,
|
||||
const char *statefile,
|
||||
const int nnew, const int nmin,
|
||||
const cubareal flatness, const char *statefile, void *spin,
|
||||
int *nregions, int *neval, int *fail,
|
||||
double integral[], double error[], double prob[]);
|
||||
cubareal integral[], cubareal error[], cubareal prob[]);
|
||||
|
||||
void llSuave(const int ndim, const int ncomp,
|
||||
integrand_t integrand, void *userdata,
|
||||
const double epsrel, const double epsabs,
|
||||
integrand_t integrand, void *userdata, const long long int nvec,
|
||||
const cubareal epsrel, const cubareal epsabs,
|
||||
const int flags, const int seed,
|
||||
const long long int mineval, const long long int maxeval,
|
||||
const long long int nnew, const double flatness,
|
||||
const char *statefile,
|
||||
const long long int nnew, const long long int nmin,
|
||||
const cubareal flatness, const char *statefile, void *spin,
|
||||
int *nregions, long long int *neval, int *fail,
|
||||
double integral[], double error[], double prob[]);
|
||||
cubareal integral[], cubareal error[], cubareal prob[]);
|
||||
|
||||
void Divonne(const int ndim, const int ncomp,
|
||||
integrand_t integrand, void *userdata,
|
||||
const double epsrel, const double epsabs,
|
||||
integrand_t integrand, void *userdata, const int nvec,
|
||||
const cubareal epsrel, const cubareal epsabs,
|
||||
const int flags, const int seed,
|
||||
const int mineval, const int maxeval,
|
||||
const int key1, const int key2, const int key3, const int maxpass,
|
||||
const double border, const double maxchisq, const double mindeviation,
|
||||
const int ngiven, const int ldxgiven, double xgiven[],
|
||||
const cubareal border, const cubareal maxchisq, const cubareal mindeviation,
|
||||
const int ngiven, const int ldxgiven, cubareal xgiven[],
|
||||
const int nextra, peakfinder_t peakfinder,
|
||||
const char *statefile,
|
||||
const char *statefile, void *spin,
|
||||
int *nregions, int *neval, int *fail,
|
||||
double integral[], double error[], double prob[]);
|
||||
cubareal integral[], cubareal error[], cubareal prob[]);
|
||||
|
||||
void llDivonne(const int ndim, const int ncomp,
|
||||
integrand_t integrand, void *userdata,
|
||||
const double epsrel, const double epsabs,
|
||||
integrand_t integrand, void *userdata, const long long int nvec,
|
||||
const cubareal epsrel, const cubareal epsabs,
|
||||
const int flags, const int seed,
|
||||
const long long int mineval, const long long int maxeval,
|
||||
const int key1, const int key2, const int key3, const int maxpass,
|
||||
const double border, const double maxchisq, const double mindeviation,
|
||||
const long long int ngiven, const int ldxgiven, double xgiven[],
|
||||
const long long int nextra,
|
||||
void (*peakfinder)(const int *, const double [], int *, double []),
|
||||
const char *statefile,
|
||||
const cubareal border, const cubareal maxchisq, const cubareal mindeviation,
|
||||
const long long int ngiven, const int ldxgiven, cubareal xgiven[],
|
||||
const long long int nextra, peakfinder_t peakfinder,
|
||||
const char *statefile, void *spin,
|
||||
int *nregions, long long int *neval, int *fail,
|
||||
double integral[], double error[], double prob[]);
|
||||
cubareal integral[], cubareal error[], cubareal prob[]);
|
||||
|
||||
void Cuhre(const int ndim, const int ncomp,
|
||||
integrand_t integrand, void *userdata,
|
||||
const double epsrel, const double epsabs,
|
||||
integrand_t integrand, void *userdata, const int nvec,
|
||||
const cubareal epsrel, const cubareal epsabs,
|
||||
const int flags, const int mineval, const int maxeval,
|
||||
const int key,
|
||||
const char *statefile,
|
||||
const char *statefile, void *spin,
|
||||
int *nregions, int *neval, int *fail,
|
||||
double integral[], double error[], double prob[]);
|
||||
cubareal integral[], cubareal error[], cubareal prob[]);
|
||||
|
||||
void llCuhre(const int ndim, const int ncomp,
|
||||
integrand_t integrand, void *userdata,
|
||||
const double epsrel, const double epsabs,
|
||||
integrand_t integrand, void *userdata, const long long int nvec,
|
||||
const cubareal epsrel, const cubareal epsabs,
|
||||
const int flags,
|
||||
const long long int mineval, const long long int maxeval,
|
||||
const int key,
|
||||
const char *statefile,
|
||||
const char *statefile, void *spin,
|
||||
int *nregions, long long int *neval, int *fail,
|
||||
double integral[], double error[], double prob[]);
|
||||
cubareal integral[], cubareal error[], cubareal prob[]);
|
||||
|
||||
void cubasetinit(void (*)(), void *);
|
||||
void cubasetexit(void (*)(), void *);
|
||||
void cubaruninit(void);
|
||||
void cubaruninit(void);
|
||||
void cubafork(void *pspin);
|
||||
void cubawait(void *pspin);
|
||||
|
||||
void cubacores(const int n, const int p);
|
||||
void cubaaccel(const int n, const int p);
|
||||
|
||||
void cubainit(void (*f)(), void *arg);
|
||||
void cubaexit(void (*f)(), void *arg);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
29
src/external/libCuba/src/cuhre/CMakeLists.txt
vendored
Normal file
29
src/external/libCuba/src/cuhre/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
#--- cuhre --------------------------------------------------------------------
|
||||
|
||||
#--- obj lib creation ---------------------------------------------------------
|
||||
add_library(cuhre OBJECT
|
||||
Cuhre.c
|
||||
)
|
||||
|
||||
#--- make sure that the include directory is found ----------------------------
|
||||
target_include_directories(
|
||||
cuhre BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../common>
|
||||
)
|
||||
|
||||
#--- check for pre compile flags ----------------------------------------------
|
||||
set(COMP_DEF "-DHAVE_CONFIG_H")
|
||||
set(COMP_DEF ${COMP_DEF} "-DNOUNDERSCORE")
|
||||
set(COMP_DEF ${COMP_DEF} "-Dcubafun_=libCuhrecubafun_")
|
||||
|
||||
target_compile_definitions(
|
||||
cuhre PRIVATE ${COMP_DEF}
|
||||
)
|
||||
|
||||
#--- set compiler options -----------------------------------------------------
|
||||
target_compile_options(
|
||||
cuhre PRIVATE -fPIC
|
||||
)
|
29
src/external/libCuba/src/cuhre/Cuhre.c
vendored
29
src/external/libCuba/src/cuhre/Cuhre.c
vendored
@ -2,7 +2,7 @@
|
||||
Cuhre.c
|
||||
Adaptive integration using cubature rules
|
||||
by Thomas Hahn
|
||||
last modified 17 Sep 13 th
|
||||
last modified 22 Jul 14 th
|
||||
*/
|
||||
|
||||
|
||||
@ -15,55 +15,70 @@
|
||||
/*********************************************************************/
|
||||
|
||||
Extern void EXPORT(Cuhre)(ccount ndim, ccount ncomp,
|
||||
Integrand integrand, void *userdata,
|
||||
Integrand integrand, void *userdata, cnumber nvec,
|
||||
creal epsrel, creal epsabs,
|
||||
cint flags, cnumber mineval, cnumber maxeval,
|
||||
ccount key, cchar *statefile,
|
||||
ccount key, cchar *statefile, Spin **pspin,
|
||||
count *pnregions, number *pneval, int *pfail,
|
||||
real *integral, real *error, real *prob)
|
||||
{
|
||||
This t;
|
||||
|
||||
VerboseInit();
|
||||
|
||||
t.ndim = ndim;
|
||||
t.ncomp = ncomp;
|
||||
t.integrand = integrand;
|
||||
t.userdata = userdata;
|
||||
t.nvec = nvec;
|
||||
t.epsrel = epsrel;
|
||||
t.epsabs = epsabs;
|
||||
t.flags = flags;
|
||||
t.flags = MaxVerbose(flags);
|
||||
t.mineval = mineval;
|
||||
t.maxeval = maxeval;
|
||||
t.key = key;
|
||||
t.statefile = statefile;
|
||||
FORK_ONLY(t.spin = Invalid(pspin) ? NULL : *pspin;)
|
||||
|
||||
*pfail = Integrate(&t, integral, error, prob);
|
||||
*pnregions = t.nregions;
|
||||
*pneval = t.neval;
|
||||
|
||||
WaitCores(&t, pspin);
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
Extern void EXPORT(cuhre)(ccount *pndim, ccount *pncomp,
|
||||
Integrand integrand, void *userdata,
|
||||
Integrand integrand, void *userdata, cnumber *pnvec,
|
||||
creal *pepsrel, creal *pepsabs,
|
||||
cint *pflags, cnumber *pmineval, cnumber *pmaxeval,
|
||||
ccount *pkey, cchar *statefile,
|
||||
ccount *pkey, cchar *statefile, Spin **pspin,
|
||||
count *pnregions, number *pneval, int *pfail,
|
||||
real *integral, real *error, real *prob, cint statefilelen)
|
||||
{
|
||||
This t;
|
||||
|
||||
VerboseInit();
|
||||
|
||||
t.ndim = *pndim;
|
||||
t.ncomp = *pncomp;
|
||||
t.integrand = integrand;
|
||||
t.userdata = userdata;
|
||||
t.nvec = *pnvec;
|
||||
t.epsrel = *pepsrel;
|
||||
t.epsabs = *pepsabs;
|
||||
t.flags = *pflags;
|
||||
t.flags = MaxVerbose(*pflags);
|
||||
t.mineval = *pmineval;
|
||||
t.maxeval = *pmaxeval;
|
||||
t.key = *pkey;
|
||||
CString(t.statefile, statefile, statefilelen);
|
||||
FORK_ONLY(t.spin = Invalid(pspin) ? NULL : *pspin;)
|
||||
|
||||
*pfail = Integrate(&t, integral, error, prob);
|
||||
*pnregions = t.nregions;
|
||||
*pneval = t.neval;
|
||||
|
||||
WaitCores(&t, pspin);
|
||||
}
|
||||
|
||||
|
26
src/external/libCuba/src/cuhre/Integrate.c
vendored
26
src/external/libCuba/src/cuhre/Integrate.c
vendored
@ -3,7 +3,7 @@
|
||||
integrate over the unit hypercube
|
||||
this file is part of Cuhre
|
||||
checkpointing by B. Chokoufe
|
||||
last modified 17 Sep 13 th
|
||||
last modified 14 Mar 15 th
|
||||
*/
|
||||
|
||||
|
||||
@ -11,6 +11,9 @@
|
||||
|
||||
typedef struct pool {
|
||||
struct pool *next;
|
||||
#if REALSIZE > 8
|
||||
void *dummy; /* for alignment */
|
||||
#endif
|
||||
char region[];
|
||||
} Pool;
|
||||
|
||||
@ -42,12 +45,14 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
if( VERBOSE > 1 ) {
|
||||
sprintf(out, "Cuhre input parameters:\n"
|
||||
" ndim " COUNT "\n ncomp " COUNT "\n"
|
||||
ML_NOT(" nvec " NUMBER "\n")
|
||||
" epsrel " REAL "\n epsabs " REAL "\n"
|
||||
" flags %d\n mineval " NUMBER "\n maxeval " NUMBER "\n"
|
||||
" key " COUNT "\n"
|
||||
" statefile \"%s\"",
|
||||
t->ndim, t->ncomp,
|
||||
t->epsrel, t->epsabs,
|
||||
ML_NOT(t->nvec,)
|
||||
SHOW(t->epsrel), SHOW(t->epsabs),
|
||||
t->flags, t->mineval, t->maxeval,
|
||||
t->key,
|
||||
t->statefile);
|
||||
@ -61,7 +66,7 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
|
||||
RuleAlloc(t);
|
||||
t->mineval = IMax(t->mineval, t->rule.n + 1);
|
||||
FrameAlloc(t, ShmRm(t));
|
||||
FrameAlloc(t, Master);
|
||||
ForkCores(t);
|
||||
|
||||
if( (fail = setjmp(t->abort)) ) goto abort;
|
||||
@ -125,7 +130,8 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
for( tot = state->totals, comp = 0; tot < Tot; ++tot )
|
||||
oe += sprintf(oe, "\n[" COUNT "] "
|
||||
REAL " +- " REAL " \tchisq " REAL " (" COUNT " df)",
|
||||
++comp, tot->avg, tot->err, tot->chisq, t->nregions - 1);
|
||||
++comp, SHOW(tot->avg), SHOW(tot->err),
|
||||
SHOW(tot->chisq), t->nregions - 1);
|
||||
Print(out);
|
||||
}
|
||||
|
||||
@ -188,7 +194,7 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
|
||||
tot->lastavg += diff = resL->avg + resR->avg - res->avg;
|
||||
|
||||
diff = fabs(.25*diff);
|
||||
diff = fabsx(.25*diff);
|
||||
err = resL->err + resR->err;
|
||||
if( err > 0 ) {
|
||||
creal c = 1 + 2*diff/err;
|
||||
@ -213,7 +219,7 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
}
|
||||
else {
|
||||
tot->avg = avg;
|
||||
tot->err = sqrt(sigsq);
|
||||
tot->err = sqrtx(sigsq);
|
||||
}
|
||||
}
|
||||
++t->nregions;
|
||||
@ -249,13 +255,13 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
Result *Res;
|
||||
|
||||
MLPutFunction(stdlink, "Cuba`Cuhre`region", 2);
|
||||
MLPutRealList(stdlink, (real *)region->bounds, 2*t->ndim);
|
||||
MLPutRealxList(stdlink, (real *)region->bounds, 2*t->ndim);
|
||||
|
||||
MLPutFunction(stdlink, "List", t->ncomp);
|
||||
for( Res = (res = RegionResult(region)) + t->ncomp;
|
||||
res < Res; ++res ) {
|
||||
real r[] = {res->avg, res->err};
|
||||
MLPutRealList(stdlink, r, Elements(r));
|
||||
MLPutRealxList(stdlink, r, Elements(r));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -266,9 +272,7 @@ abort:
|
||||
cur = cur->next;
|
||||
free(pool);
|
||||
}
|
||||
|
||||
WaitCores(t);
|
||||
FrameFree(t);
|
||||
FrameFree(t, Master);
|
||||
RuleFree(t);
|
||||
|
||||
StateRemove(t);
|
||||
|
2
src/external/libCuba/src/cuhre/Makefile.am
vendored
2
src/external/libCuba/src/cuhre/Makefile.am
vendored
@ -3,7 +3,7 @@
|
||||
c_sources = Cuhre.c
|
||||
|
||||
AM_CPPFLAGS = -I. -I.. -I../common -DNOUNDERSCORE
|
||||
AM_CFLAGS = $(LOCAL_CUBA_LIB_CFLAGS)
|
||||
AM_CFLAGS = $(LOCAL_CUBA_LIB_CFLAGS) "-Dcubafun_=libCuhrecubafun_"
|
||||
AM_LDFLAGS = $(LOCAL_LIB_LDFLAGS)
|
||||
|
||||
noinst_LTLIBRARIES = libcuhre.la
|
||||
|
129
src/external/libCuba/src/cuhre/Rule.c
vendored
129
src/external/libCuba/src/cuhre/Rule.c
vendored
@ -4,11 +4,12 @@
|
||||
code lifted with minor modifications from DCUHRE
|
||||
by J. Berntsen, T. Espelid, and A. Genz
|
||||
this file is part of Cuhre
|
||||
last modified 5 Aug 13 th
|
||||
last modified 7 May 15 th
|
||||
*/
|
||||
|
||||
|
||||
#define NextSet(p) p = (Set *)((char *)p + setsize)
|
||||
#define IndexSet(p, n) ((Set *)((char *)p + n*setsize))
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
@ -153,7 +154,7 @@ static void Rule13Alloc(This *t)
|
||||
-s->weight[r + 1]/s->weight[r];
|
||||
real sum = 0;
|
||||
for( x = first; x <= last; NextSet(x) )
|
||||
sum += x->n*fabs(x->weight[r + 1] + scale*x->weight[r]);
|
||||
sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]);
|
||||
s->scale[r] = scale;
|
||||
s->norm[r] = 1/sum;
|
||||
}
|
||||
@ -298,7 +299,7 @@ static void Rule11Alloc(This *t)
|
||||
-s->weight[r + 1]/s->weight[r];
|
||||
real sum = 0;
|
||||
for( x = first; x <= last; NextSet(x) )
|
||||
sum += x->n*fabs(x->weight[r + 1] + scale*x->weight[r]);
|
||||
sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]);
|
||||
s->scale[r] = scale;
|
||||
s->norm[r] = 1/sum;
|
||||
}
|
||||
@ -309,32 +310,55 @@ static void Rule11Alloc(This *t)
|
||||
static void Rule9Alloc(This *t)
|
||||
{
|
||||
static creal w[] = {
|
||||
-.0023611709677855117884, .11415390023857325268,
|
||||
-.63833920076702389094, .74849988504685208004,
|
||||
-.0014324017033399125142, .057471507864489725949,
|
||||
-.14225104571434243234, -.062875028738286979989,
|
||||
.254591133248959089, -1.207328566678236261,
|
||||
.89567365764160676508, -.36479356986049146661,
|
||||
.0035417564516782676826, -.072609367395893679605,
|
||||
.10557491625218991012, .0021486025550098687713,
|
||||
-.032268563892953949998, .010636783990231217481,
|
||||
.014689102496143490175, .51134708346467591431,
|
||||
.45976448120806344646, .18239678493024573331,
|
||||
-.04508628929435784076, .21415883524352793401,
|
||||
-.027351546526545644722, .054941067048711234101,
|
||||
.11937596202570775297, .65089519391920250593,
|
||||
.14744939829434460168, .057693384490973483573,
|
||||
.034999626602143583822, -1.3868627719278281436,
|
||||
-.2386668732575008879, .015532417276607053264,
|
||||
.0035328099607090870236, .09231719987444221619,
|
||||
.02254314464717892038, .013675773263272822361,
|
||||
-.32544759695960125297, .0017708782258391338413,
|
||||
.0010743012775049343856, .25150011495314791996 };
|
||||
RC(-.002361170967785511788400941242259231309691),
|
||||
RC(.1141539002385732526821323741697655347686),
|
||||
RC(-.6383392007670238909386026193674701393074),
|
||||
RC(.7484998850468520800423030047583803945205),
|
||||
RC(-.001432401703339912514196154599769007103671),
|
||||
RC(.05747150786448972594860897296200006759892),
|
||||
RC(-.1422510457143424323449521620935950679394),
|
||||
RC(-.06287502873828697998942424881040490136987),
|
||||
RC(.2545911332489590890011611142429070613156),
|
||||
RC(-1.207328566678236261002219995185143356737),
|
||||
RC(.8956736576416067650809467826488567200939),
|
||||
RC(-.3647935698604914666100134551377381205297),
|
||||
RC(.003541756451678267682601411863388846964536),
|
||||
RC(-.07260936739589367960492815865074633743652),
|
||||
RC(.1055749162521899101218622863269817454540),
|
||||
RC(.002148602555009868771294231899653510655506),
|
||||
RC(-.03226856389295394999786630399875134318006),
|
||||
RC(.01063678399023121748083624225818915724455),
|
||||
RC(.01468910249614349017540783437728097691502),
|
||||
RC(.5113470834646759143109387357149329909126),
|
||||
RC(.4597644812080634464633352781605214342691),
|
||||
RC(.1823967849302457333050067275688690602649),
|
||||
RC(-.04508628929435784075980562738240804429658),
|
||||
RC(.2141588352435279340097929526588394300172),
|
||||
RC(-.02735154652654564472203690086290223507436),
|
||||
RC(.05494106704871123410060080562462135546101),
|
||||
RC(.1193759620257077529708962121565290178730),
|
||||
RC(.6508951939192025059314756320878023215278),
|
||||
RC(.1474493982943446016775696826942585013243),
|
||||
RC(.05769338449097348357291272840392627722165),
|
||||
RC(.03499962660214358382244159694487155861542),
|
||||
RC(-1.386862771927828143599782668709014266770),
|
||||
RC(-.2386668732575008878964134721962088068396),
|
||||
RC(.01553241727660705326386197156586357005224),
|
||||
RC(.003532809960709087023561817517751309380604),
|
||||
RC(.09231719987444221619017126187763868745587),
|
||||
RC(.02254314464717892037990281369120402214829),
|
||||
RC(.01367577326327282236101845043145111753718),
|
||||
RC(-.3254475969596012529657378160439011607639),
|
||||
RC(.001770878225839133841300705931694423482268),
|
||||
RC(.001074301277504934385647115949826755327753),
|
||||
RC(.2515001149531479199576969952416196054795) };
|
||||
|
||||
static creal g[] = {
|
||||
.47795365790226950619, .20302858736911986780,
|
||||
.44762735462617812882, .125,
|
||||
.34303789878087814570 };
|
||||
RC(.4779536579022695061928604197171830064732),
|
||||
RC(.2030285873691198677998034402373279133258),
|
||||
RC(.4476273546261781288207704806530998539285),
|
||||
RC(.125),
|
||||
RC(.3430378987808781457001426145164678603407) };
|
||||
|
||||
enum { nsets = 9 };
|
||||
|
||||
@ -440,7 +464,7 @@ static void Rule9Alloc(This *t)
|
||||
-s->weight[r + 1]/s->weight[r];
|
||||
real sum = 0;
|
||||
for( x = first; x <= last; NextSet(x) )
|
||||
sum += x->n*fabs(x->weight[r + 1] + scale*x->weight[r]);
|
||||
sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]);
|
||||
s->scale[r] = scale;
|
||||
s->norm[r] = 1/sum;
|
||||
}
|
||||
@ -451,21 +475,33 @@ static void Rule9Alloc(This *t)
|
||||
static void Rule7Alloc(This *t)
|
||||
{
|
||||
static creal w[] = {
|
||||
.019417866674748388428, -.40385257701150182546,
|
||||
.64485668767465982223, .01177982690775806141,
|
||||
-.18041318740733609012, -.088785828081335044443,
|
||||
.056328645808285941374, -.0097089333373741942142,
|
||||
-.99129176779582358138, -.17757165616267008889,
|
||||
.12359398032043233572, .074978148702033690681,
|
||||
.55489147051423559776, .088041241522692771226,
|
||||
.021118358455513385083, -.0099302203239653333087,
|
||||
-.064100053285010904179, .030381729038221007659,
|
||||
.0058899134538790307051, -.0048544666686870971071,
|
||||
.35514331232534017777 };
|
||||
RC(.01941786667474838842844534313920462333850),
|
||||
RC(-.4038525770115018254611834753723880293161),
|
||||
RC(.6448566876746598222277360730193089551024),
|
||||
RC(.01177982690775806141012214458820955067854),
|
||||
RC(-.1804131874073360901182293138710989490609),
|
||||
RC(-.08878582808133504444306598174517276122439),
|
||||
RC(.05632864580828594137378124255408286479947),
|
||||
RC(-.009708933337374194214222671569602311669249),
|
||||
RC(-.9912917677958235813775106862002319060386),
|
||||
RC(-.1775716561626700888861319634903455224488),
|
||||
RC(.1235939803204323357183625846672135876752),
|
||||
RC(.07497814870203369068087999555157339703666),
|
||||
RC(.5548914705142355977605994477355651401434),
|
||||
RC(.08804124152269277122645182458858273865209),
|
||||
RC(.02111835845551338508329573367808085283304),
|
||||
RC(-.009930220323965333308685820460105538586058),
|
||||
RC(-.06410005328501090417895544042025034295870),
|
||||
RC(.03038172903822100765927778829870429682489),
|
||||
RC(.005889913453879030705061072294104775339268),
|
||||
RC(-.004854466668687097107111335784801155834624),
|
||||
RC(.3551433123253401777722639269806910448976) };
|
||||
|
||||
static creal g[] = {
|
||||
.47795365790226950619, .20302858736911986780,
|
||||
.375, .34303789878087814570 };
|
||||
RC(.4779536579022695061928604197171830064732),
|
||||
RC(.2030285873691198677998034402373279133258),
|
||||
RC(.375),
|
||||
RC(.3430378987808781457001426145164678603407) };
|
||||
|
||||
enum { nsets = 6 };
|
||||
|
||||
@ -541,7 +577,7 @@ static void Rule7Alloc(This *t)
|
||||
-s->weight[r + 1]/s->weight[r];
|
||||
real sum = 0;
|
||||
for( x = first; x <= last; NextSet(x) )
|
||||
sum += x->n*fabs(x->weight[r + 1] + scale*x->weight[r]);
|
||||
sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]);
|
||||
s->scale[r] = scale;
|
||||
s->norm[r] = 1/sum;
|
||||
}
|
||||
@ -630,7 +666,8 @@ static void Sample(This *t, Region *region)
|
||||
Bounds *b, *B = region->bounds + t->ndim;
|
||||
Result *result = RegionResult(region), *res, *Res = result + t->ncomp;
|
||||
creal *errcoeff = t->rule.errcoeff;
|
||||
creal ratio = Sq(first[2].gen[0]/first[1].gen[0]);
|
||||
creal ratio = Sq(IndexSet(first,2)->gen[0]/
|
||||
IndexSet(first,1)->gen[0]);
|
||||
|
||||
ccount offset = 2*t->ndim*t->ncomp;
|
||||
count dim, rul, n, maxdim = 0;
|
||||
@ -659,7 +696,7 @@ static void Sample(This *t, Region *region)
|
||||
for( dim = 0; dim < t->ndim; ++dim ) {
|
||||
creal *fp = f1 + t->ncomp;
|
||||
creal *fm = fp + t->ncomp;
|
||||
creal fourthdiff = fabs(base +
|
||||
creal fourthdiff = fabsx(base +
|
||||
ratio*(fp[0] + fm[0]) - (fp[offset] + fm[offset]));
|
||||
f1 = fm;
|
||||
if( fourthdiff > maxdiff ) {
|
||||
@ -688,7 +725,7 @@ static void Sample(This *t, Region *region)
|
||||
real maxerr = 0;
|
||||
for( s = first; s <= last; NextSet(s) )
|
||||
maxerr = Max(maxerr,
|
||||
fabs(sum[rul + 1] + s->scale[rul]*sum[rul])*s->norm[rul]);
|
||||
fabsx(sum[rul + 1] + s->scale[rul]*sum[rul])*s->norm[rul]);
|
||||
sum[rul] = maxerr;
|
||||
}
|
||||
|
||||
@ -712,7 +749,7 @@ static void Sample(This *t, Region *region)
|
||||
|
||||
for( res = result, comp = 0; res < Res; ++res )
|
||||
oe += sprintf(oe, "\n[" COUNT "] "
|
||||
REAL " +- " REAL, ++comp, res->avg, res->err);
|
||||
REAL " +- " REAL, ++comp, SHOW(res->avg), SHOW(res->err));
|
||||
|
||||
Print(out);
|
||||
}
|
||||
|
8
src/external/libCuba/src/cuhre/decl.h
vendored
8
src/external/libCuba/src/cuhre/decl.h
vendored
@ -2,7 +2,7 @@
|
||||
decl.h
|
||||
Type declarations
|
||||
this file is part of Cuhre
|
||||
last modified 26 Jul 13 th
|
||||
last modified 21 Jul 14 th
|
||||
*/
|
||||
|
||||
|
||||
@ -47,16 +47,18 @@ typedef struct {
|
||||
|
||||
typedef const Rule cRule;
|
||||
|
||||
typedef int (*Integrand)(ccount *, creal *, ccount *, real *, void *);
|
||||
typedef int (*Integrand)(ccount *, creal *, ccount *, real *,
|
||||
void *, cnumber *, cint *);
|
||||
|
||||
typedef struct _this {
|
||||
count ndim, ncomp;
|
||||
#ifndef MLVERSION
|
||||
Integrand integrand;
|
||||
void *userdata;
|
||||
number nvec;
|
||||
#ifdef HAVE_FORK
|
||||
int ncores, *child;
|
||||
SHM_ONLY(int shmid;)
|
||||
Spin *spin;
|
||||
#endif
|
||||
#endif
|
||||
real *frame;
|
||||
|
29
src/external/libCuba/src/divonne/CMakeLists.txt
vendored
Normal file
29
src/external/libCuba/src/divonne/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
#--- divonne ------------------------------------------------------------------
|
||||
|
||||
#--- obj lib creation ---------------------------------------------------------
|
||||
add_library(divonne OBJECT
|
||||
Divonne.c
|
||||
)
|
||||
|
||||
#--- make sure that the include directory is found ----------------------------
|
||||
target_include_directories(
|
||||
divonne BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../common>
|
||||
)
|
||||
|
||||
#--- check for pre compile flags ----------------------------------------------
|
||||
set(COMP_DEF "-DHAVE_CONFIG_H")
|
||||
set(COMP_DEF ${COMP_DEF} "-DNOUNDERSCORE")
|
||||
set(COMP_DEF ${COMP_DEF} "-Dcubafun_=libDivonnecubafun_")
|
||||
|
||||
target_compile_definitions(
|
||||
divonne PRIVATE ${COMP_DEF}
|
||||
)
|
||||
|
||||
#--- set compiler options -----------------------------------------------------
|
||||
target_compile_options(
|
||||
divonne PRIVATE -fPIC
|
||||
)
|
28
src/external/libCuba/src/divonne/Divonne.c
vendored
28
src/external/libCuba/src/divonne/Divonne.c
vendored
@ -4,7 +4,7 @@
|
||||
originally by J.H. Friedman and M.H. Wright
|
||||
(CERNLIB subroutine D151)
|
||||
this version by Thomas Hahn
|
||||
last modified 17 Sep 13 th
|
||||
last modified 22 Jul 14 th
|
||||
*/
|
||||
|
||||
#define DIVONNE
|
||||
@ -16,7 +16,7 @@
|
||||
/*********************************************************************/
|
||||
|
||||
Extern void EXPORT(Divonne)(ccount ndim, ccount ncomp,
|
||||
Integrand integrand, void *userdata,
|
||||
Integrand integrand, void *userdata, cnumber nvec,
|
||||
creal epsrel, creal epsabs,
|
||||
cint flags, cint seed,
|
||||
cnumber mineval, cnumber maxeval,
|
||||
@ -24,18 +24,22 @@ Extern void EXPORT(Divonne)(ccount ndim, ccount ncomp,
|
||||
creal border, creal maxchisq, creal mindeviation,
|
||||
cnumber ngiven, ccount ldxgiven, real *xgiven,
|
||||
cnumber nextra, PeakFinder peakfinder,
|
||||
cchar *statefile,
|
||||
cchar *statefile, Spin **pspin,
|
||||
int *pnregions, number *pneval, int *pfail,
|
||||
real *integral, real *error, real *prob)
|
||||
{
|
||||
This t;
|
||||
|
||||
VerboseInit();
|
||||
|
||||
t.ndim = ndim;
|
||||
t.ncomp = ncomp;
|
||||
t.integrand = integrand;
|
||||
t.userdata = userdata;
|
||||
t.nvec = nvec;
|
||||
t.epsrel = epsrel;
|
||||
t.epsabs = epsabs;
|
||||
t.flags = flags;
|
||||
t.flags = MaxVerbose(flags);
|
||||
t.seed = seed;
|
||||
t.mineval = mineval;
|
||||
t.maxeval = maxeval;
|
||||
@ -52,16 +56,19 @@ Extern void EXPORT(Divonne)(ccount ndim, ccount ncomp,
|
||||
t.nextra = nextra;
|
||||
t.peakfinder = peakfinder;
|
||||
t.statefile = statefile;
|
||||
FORK_ONLY(t.spin = Invalid(pspin) ? NULL : *pspin;)
|
||||
|
||||
*pfail = Integrate(&t, integral, error, prob);
|
||||
*pnregions = t.nregions;
|
||||
*pneval = t.neval;
|
||||
|
||||
WaitCores(&t, pspin);
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
Extern void EXPORT(divonne)(ccount *pndim, ccount *pncomp,
|
||||
Integrand integrand, void *userdata,
|
||||
Integrand integrand, void *userdata, cnumber *pnvec,
|
||||
creal *pepsrel, creal *pepsabs,
|
||||
cint *pflags, cint *pseed,
|
||||
cnumber *pmineval, cnumber *pmaxeval,
|
||||
@ -69,18 +76,22 @@ Extern void EXPORT(divonne)(ccount *pndim, ccount *pncomp,
|
||||
creal *pborder, creal *pmaxchisq, creal *pmindeviation,
|
||||
cnumber *pngiven, ccount *pldxgiven, real *xgiven,
|
||||
cnumber *pnextra, PeakFinder peakfinder,
|
||||
cchar *statefile,
|
||||
cchar *statefile, Spin **pspin,
|
||||
int *pnregions, number *pneval, int *pfail,
|
||||
real *integral, real *error, real *prob, cint statefilelen)
|
||||
{
|
||||
This t;
|
||||
|
||||
VerboseInit();
|
||||
|
||||
t.ndim = *pndim;
|
||||
t.ncomp = *pncomp;
|
||||
t.integrand = integrand;
|
||||
t.userdata = userdata;
|
||||
t.nvec = *pnvec;
|
||||
t.epsrel = *pepsrel;
|
||||
t.epsabs = *pepsabs;
|
||||
t.flags = *pflags;
|
||||
t.flags = MaxVerbose(*pflags);
|
||||
t.seed = *pseed;
|
||||
t.mineval = *pmineval;
|
||||
t.maxeval = *pmaxeval;
|
||||
@ -97,9 +108,12 @@ Extern void EXPORT(divonne)(ccount *pndim, ccount *pncomp,
|
||||
t.nextra = *pnextra;
|
||||
t.peakfinder = peakfinder;
|
||||
CString(t.statefile, statefile, statefilelen);
|
||||
FORK_ONLY(t.spin = Invalid(pspin) ? NULL : *pspin;)
|
||||
|
||||
*pfail = Integrate(&t, integral, error, prob);
|
||||
*pnregions = t.nregions;
|
||||
*pneval = t.neval;
|
||||
|
||||
WaitCores(&t, pspin);
|
||||
}
|
||||
|
||||
|
21
src/external/libCuba/src/divonne/Explore.c
vendored
21
src/external/libCuba/src/divonne/Explore.c
vendored
@ -2,7 +2,7 @@
|
||||
Explore.c
|
||||
sample region, determine min and max, split if necessary
|
||||
this file is part of Divonne
|
||||
last modified 2 Aug 13 th
|
||||
last modified 12 Mar 15 th
|
||||
*/
|
||||
|
||||
|
||||
@ -19,10 +19,11 @@ static int ExploreSerial(This *t, ccount iregion)
|
||||
Region *region = RegionPtr(iregion);
|
||||
cBounds *bounds = region->bounds;
|
||||
Result *result = RegionResult(region);
|
||||
real *minmax = RegionMinMax(region);
|
||||
|
||||
Vector(Extrema, extrema, NCOMP);
|
||||
Vector(real, xtmp, NDIM);
|
||||
Result *r, *r0;
|
||||
Result *r;
|
||||
creal *x;
|
||||
real *f;
|
||||
real halfvol, maxerr;
|
||||
@ -102,7 +103,7 @@ skip:
|
||||
ftmp = FindMinimum(t, bounds, xtmp, e->fmin);
|
||||
if( ftmp < r->fmin ) {
|
||||
r->fmin = ftmp;
|
||||
XCopy(&r->xminmax[0], xtmp);
|
||||
XCopy(&minmax[2*comp*t->ndim], xtmp);
|
||||
}
|
||||
|
||||
t->selectedcomp = Tag(comp);
|
||||
@ -110,12 +111,12 @@ skip:
|
||||
ftmp = -FindMinimum(t, bounds, xtmp, -e->fmax);
|
||||
if( ftmp > r->fmax ) {
|
||||
r->fmax = ftmp;
|
||||
XCopy(&r->xminmax[t->ndim], xtmp);
|
||||
XCopy(&minmax[(2*comp + 1)*t->ndim], xtmp);
|
||||
}
|
||||
}
|
||||
|
||||
r->spread = halfvol*(r->fmax - r->fmin);
|
||||
err = r->spread/Max(fabs(r->avg), NOTZERO);
|
||||
err = r->spread/Max(fabsx(r->avg), NOTZERO);
|
||||
if( err > maxerr ) {
|
||||
maxerr = err;
|
||||
maxcomp = comp;
|
||||
@ -130,22 +131,22 @@ skip:
|
||||
}
|
||||
|
||||
region->cutcomp = maxcomp;
|
||||
r0 = RegionResult(region);
|
||||
r = r0 + maxcomp;
|
||||
r = RegionResult(region) + maxcomp;
|
||||
if( halfvol*(r->fmin + r->fmax) > r->avg ) {
|
||||
region->fminor = r->fmin;
|
||||
region->fmajor = r->fmax;
|
||||
region->xmajor = &r->xminmax[t->ndim] - (real *)r0;
|
||||
region->xmajor = (2*maxcomp + 1)*t->ndim;
|
||||
}
|
||||
else {
|
||||
region->fminor = r->fmax;
|
||||
region->fmajor = r->fmin;
|
||||
region->xmajor = &r->xminmax[0] - (real *)r0;
|
||||
region->xmajor = 2*maxcomp*t->ndim;
|
||||
}
|
||||
|
||||
if( region->isamples == 0 ) {
|
||||
if( (region->depth < INIDEPTH && r->spread < samples->neff*r->err) ||
|
||||
r->spread < t->totals[maxcomp].secondspread ) region->depth = 0;
|
||||
r->spread < t->totals[maxcomp].secondspread )
|
||||
region->depth = 0;
|
||||
if( region->depth == 0 )
|
||||
for( comp = 0; comp < t->ncomp; ++comp )
|
||||
t->totals[comp].secondspread =
|
||||
|
52
src/external/libCuba/src/divonne/FindMinimum.c
vendored
52
src/external/libCuba/src/divonne/FindMinimum.c
vendored
@ -2,7 +2,7 @@
|
||||
FindMinimum.c
|
||||
find minimum (maximum) of hyperrectangular region
|
||||
this file is part of Divonne
|
||||
last modified 7 Aug 13 th
|
||||
last modified 12 Mar 15 th
|
||||
*/
|
||||
|
||||
|
||||
@ -42,7 +42,7 @@ static inline real Dot(ccount n, creal *a, creal *b)
|
||||
|
||||
static inline real Length(ccount n, creal *vec)
|
||||
{
|
||||
return sqrt(Dot(n, vec, vec));
|
||||
return sqrtx(Dot(n, vec, vec));
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
@ -120,7 +120,7 @@ static void UpdateCholesky(cThis *t, ccount n, real *hessian,
|
||||
p[i] = dir;
|
||||
gamma += Sq(dir)/Hessian(i, i);
|
||||
}
|
||||
gamma = Max(fabs(1 - gamma), EPS);
|
||||
gamma = Max(fabsx(1 - gamma), EPS);
|
||||
|
||||
while( --i >= 0 ) {
|
||||
creal dir = z[i] = p[i];
|
||||
@ -154,7 +154,7 @@ static inline void BFGS(cThis *t, ccount n, real *hessian,
|
||||
|
||||
c = Dot(n, g, p);
|
||||
if( c >= 0 ) return;
|
||||
c = 1/sqrt(-c);
|
||||
c = 1/sqrtx(-c);
|
||||
for( i = 0; i < n; ++i )
|
||||
y[i] = c*g[i];
|
||||
UpdateCholesky(t, n, hessian, y, p);
|
||||
@ -199,7 +199,7 @@ static Point LineSearch(This *t, ccount nfree, ccount *ifree,
|
||||
c) the gradient is positive, i.e. we'd move uphill */
|
||||
|
||||
if( step > 0 && range > tol2 && grad <= 0 ) {
|
||||
creal eps = RTEPS*fabs(range) + ftol;
|
||||
creal eps = RTEPS*fabsx(range) + ftol;
|
||||
creal mingrad = -1e-4*grad, maxgrad = -gtol*grad;
|
||||
|
||||
real end = range + eps;
|
||||
@ -225,7 +225,7 @@ static Point LineSearch(This *t, ccount nfree, ccount *ifree,
|
||||
maxstep = maxstep*(1 + .75*RTEPS) + .75*tol;
|
||||
}
|
||||
|
||||
cur.dx = (fabs(step) >= tol) ? step : (step > 0) ? tol : -tol;
|
||||
cur.dx = (fabsx(step) >= tol) ? step : (step > 0) ? tol : -tol;
|
||||
dist = distmin + cur.dx;
|
||||
for( i = 0; i < nfree; ++i ) {
|
||||
ccount dim = ifree[i];
|
||||
@ -248,7 +248,7 @@ static Point LineSearch(This *t, ccount nfree, ccount *ifree,
|
||||
if( cur.dx < 0 ) b = w;
|
||||
else a = w;
|
||||
|
||||
tol = RTEPS*fabs(distmin) + ftol;
|
||||
tol = RTEPS*fabsx(distmin) + ftol;
|
||||
tol2 = tol + tol;
|
||||
}
|
||||
else {
|
||||
@ -260,14 +260,14 @@ static Point LineSearch(This *t, ccount nfree, ccount *ifree,
|
||||
|
||||
if( distmin + b.dx <= xtol ) break;
|
||||
if( min.f < fini &&
|
||||
a.f - min.f <= fabs(a.dx)*maxgrad &&
|
||||
(fabs(distmin - range) > tol || maxstep < b.dx) ) break;
|
||||
a.f - min.f <= fabsx(a.dx)*maxgrad &&
|
||||
(fabsx(distmin - range) > tol || maxstep < b.dx) ) break;
|
||||
|
||||
mid = .5*(a.dx + b.dx);
|
||||
if( fabs(mid) <= tol2 - .5*(b.dx - a.dx) ) break;
|
||||
if( fabsx(mid) <= tol2 - .5*(b.dx - a.dx) ) break;
|
||||
|
||||
r = q = s = 0;
|
||||
if( fabs(end) > tol ) {
|
||||
if( fabsx(end) > tol ) {
|
||||
if( first ) {
|
||||
creal s1 = w.dx*grad;
|
||||
creal s2 = w.f - min.f;
|
||||
@ -281,7 +281,7 @@ static Point LineSearch(This *t, ccount nfree, ccount *ifree,
|
||||
q = 2*(s2 - s1);
|
||||
}
|
||||
if( q > 0 ) s = -s;
|
||||
q = fabs(q);
|
||||
q = fabsx(q);
|
||||
r = end;
|
||||
if( step != b1 || b.dx <= maxstep ) end = step;
|
||||
}
|
||||
@ -290,15 +290,15 @@ static Point LineSearch(This *t, ccount nfree, ccount *ifree,
|
||||
else if( b.dx > maxstep ) step = (step < b.dx) ? -4*a.dx : maxstep;
|
||||
else {
|
||||
real num = a.dx, den = b.dx;
|
||||
if( fabs(b.dx) <= tol || (w.dx > 0 && fabs(a.dx) > tol) )
|
||||
if( fabsx(b.dx) <= tol || (w.dx > 0 && fabsx(a.dx) > tol) )
|
||||
num = b.dx, den = a.dx;
|
||||
num /= -den;
|
||||
step = (num < 1) ? .5*den*sqrt(num) : 5/11.*den*(.1 + 1/num);
|
||||
step = (num < 1) ? .5*den*sqrtx(num) : 5/11.*den*(.1 + 1/num);
|
||||
}
|
||||
|
||||
if( step > 0 ) a1 = a.dx, b1 = step;
|
||||
else a1 = step, b1 = b.dx;
|
||||
if( fabs(s) < fabs(.5*q*r) && s > q*a1 && s < q*b1 ) {
|
||||
if( fabsx(s) < fabsx(.5*q*r) && s > q*a1 && s < q*b1 ) {
|
||||
step = s/q;
|
||||
if( step - a.dx < tol2 || b.dx - step < tol2 )
|
||||
step = (mid > 0) ? tol : -tol;
|
||||
@ -307,7 +307,7 @@ static Point LineSearch(This *t, ccount nfree, ccount *ifree,
|
||||
}
|
||||
|
||||
first = true;
|
||||
if( fabs(distmin - range) < tol ) {
|
||||
if( fabsx(distmin - range) < tol ) {
|
||||
distmin = range;
|
||||
if( maxstep > b.dx ) first = false;
|
||||
}
|
||||
@ -372,7 +372,7 @@ static real LocalSearch(This *t, ccount nfree, ccount *ifree,
|
||||
or we come close to a border. */
|
||||
|
||||
XCopy(y, x);
|
||||
ftest = SUFTOL*(1 + fabs(fx));
|
||||
ftest = SUFTOL*(1 + fabsx(fx));
|
||||
delta = RTDELTA/5;
|
||||
do {
|
||||
delta = Min(5*delta, smax);
|
||||
@ -381,7 +381,7 @@ static real LocalSearch(This *t, ccount nfree, ccount *ifree,
|
||||
y[dim] = x[dim] + delta*p[i];
|
||||
}
|
||||
fy = Sample(t, y);
|
||||
if( fabs(fy - fx) > ftest ) break;
|
||||
if( fabsx(fy - fx) > ftest ) break;
|
||||
} while( delta != smax );
|
||||
|
||||
/* Construct a second direction p' orthogonal to p, i.e. p.p' = 0.
|
||||
@ -425,7 +425,7 @@ static real LocalSearch(This *t, ccount nfree, ccount *ifree,
|
||||
or we come close to a border. */
|
||||
|
||||
XCopy(z, y);
|
||||
ftest = SUFTOL*(1 + fabs(fy));
|
||||
ftest = SUFTOL*(1 + fabsx(fy));
|
||||
delta = RTDELTA/5;
|
||||
do {
|
||||
delta = Min(5*delta, smax);
|
||||
@ -434,7 +434,7 @@ static real LocalSearch(This *t, ccount nfree, ccount *ifree,
|
||||
z[dim] = y[dim] + delta*p[i];
|
||||
}
|
||||
fz = Sample(t, z);
|
||||
if( fabs(fz - fy) > ftest ) break;
|
||||
if( fabsx(fz - fy) > ftest ) break;
|
||||
} while( delta != smax );
|
||||
|
||||
if( fy != fz ) {
|
||||
@ -541,12 +541,12 @@ static real FindMinimum(This *t, cBounds *b, real *xmin, real fmin)
|
||||
bool resample = false;
|
||||
nfree = nfix = 0;
|
||||
for( dim = 0; dim < t->ndim; ++dim ) {
|
||||
if( xmin[dim] < b[dim].lower + (1 + fabs(b[dim].lower))*QEPS ) {
|
||||
if( xmin[dim] < b[dim].lower + (1 + fabsx(b[dim].lower))*QEPS ) {
|
||||
xmin[dim] = b[dim].lower;
|
||||
ifix[nfix++] = dim;
|
||||
resample = true;
|
||||
}
|
||||
else if( xmin[dim] > b[dim].upper - (1 + fabs(b[dim].upper))*QEPS ) {
|
||||
else if( xmin[dim] > b[dim].upper - (1 + fabsx(b[dim].upper))*QEPS ) {
|
||||
xmin[dim] = b[dim].upper;
|
||||
ifix[nfix++] = Tag(dim);
|
||||
resample = true;
|
||||
@ -562,7 +562,7 @@ static real FindMinimum(This *t, cBounds *b, real *xmin, real fmin)
|
||||
if( local || Length(nfree, gfree) > GTOL ) break;
|
||||
|
||||
ftmp = LocalSearch(t, nfree, ifree, b, xmin, fmin, tmp);
|
||||
if( ftmp > fmin - (1 + fabs(fmin))*RTEPS )
|
||||
if( ftmp > fmin - (1 + fabsx(fmin))*RTEPS )
|
||||
goto releasebounds;
|
||||
fmin = ftmp;
|
||||
XCopy(xmin, tmp);
|
||||
@ -586,7 +586,7 @@ static real FindMinimum(This *t, cBounds *b, real *xmin, real fmin)
|
||||
minstep = INFTY;
|
||||
for( i = 0; i < nfree; ++i ) {
|
||||
count dim = Untag(ifree[i]);
|
||||
if( fabs(p[i]) > EPS ) {
|
||||
if( fabsx(p[i]) > EPS ) {
|
||||
real step;
|
||||
count fix;
|
||||
if( p[i] < 0 ) {
|
||||
@ -642,11 +642,11 @@ fixbound:
|
||||
BFGS(t, nfree, hessian, tmp, gfree, p, low.dx);
|
||||
XCopy(gfree, tmp);
|
||||
|
||||
if( fabs(low.dx - minstep) < QEPS*minstep ) goto fixbound;
|
||||
if( fabsx(low.dx - minstep) < QEPS*minstep ) goto fixbound;
|
||||
|
||||
fdiff = fini - fmin;
|
||||
fini = fmin;
|
||||
if( fdiff > (1 + fabs(fmin))*FTOL ||
|
||||
if( fdiff > (1 + fabsx(fmin))*FTOL ||
|
||||
low.dx*plen > (1 + Length(t->ndim, xmin))*FTOL ) continue;
|
||||
}
|
||||
}
|
||||
|
46
src/external/libCuba/src/divonne/Integrate.c
vendored
46
src/external/libCuba/src/divonne/Integrate.c
vendored
@ -5,7 +5,7 @@
|
||||
then do a main integration over all regions
|
||||
this file is part of Divonne
|
||||
checkpointing by B. Chokoufe
|
||||
last modified 5 Aug 13 th
|
||||
last modified 13 Mar 15 th
|
||||
*/
|
||||
|
||||
|
||||
@ -29,8 +29,8 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
Totals *tot, *Tot = state->totals + t->ncomp;
|
||||
Bounds *b, *B;
|
||||
Result *res;
|
||||
count comp, err, iregion;
|
||||
number nwant;
|
||||
count comp, iregion;
|
||||
number nwant, err;
|
||||
real nneed;
|
||||
ML_ONLY(number neff;)
|
||||
int fail;
|
||||
@ -38,6 +38,7 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
if( VERBOSE > 1 ) {
|
||||
sprintf(out, "Divonne input parameters:\n"
|
||||
" ndim " COUNT "\n ncomp " COUNT "\n"
|
||||
ML_NOT(" nvec " NUMBER "\n")
|
||||
" epsrel " REAL "\n epsabs " REAL "\n"
|
||||
" flags %d\n seed %d\n"
|
||||
" mineval " NUMBER "\n maxeval " NUMBER "\n"
|
||||
@ -46,11 +47,12 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
" ngiven " NUMBER "\n nextra " NUMBER "\n"
|
||||
" statefile \"%s\"",
|
||||
t->ndim, t->ncomp,
|
||||
t->epsrel, t->epsabs,
|
||||
ML_NOT(t->nvec,)
|
||||
SHOW(t->epsrel), SHOW(t->epsabs),
|
||||
t->flags, t->seed,
|
||||
t->mineval, t->maxeval,
|
||||
t->key1, t->key2, t->key3, t->maxpass,
|
||||
t->border.lower, t->maxchisq, t->mindeviation,
|
||||
SHOW(t->border.lower), SHOW(t->maxchisq), SHOW(t->mindeviation),
|
||||
t->ngiven, t->nextra,
|
||||
t->statefile);
|
||||
Print(out);
|
||||
@ -132,7 +134,7 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
/* Step 1: partition the integration region */
|
||||
|
||||
if( t->phase == 1 ) {
|
||||
if( VERBOSE ) Print("Partitioning phase:");
|
||||
if( VERBOSE ) Print("\nPartitioning phase:");
|
||||
|
||||
if( ini ) Iterate(t, 0, INIDEPTH, 0, NULL);
|
||||
|
||||
@ -164,7 +166,7 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
integral[comp] = tot->avg;
|
||||
valid += tot->avg == tot->avg;
|
||||
if( tot->spreadsq > maxtot->spreadsq ) maxtot = tot;
|
||||
tot->spread = sqrt(tot->spreadsq);
|
||||
tot->spread = sqrtx(tot->spreadsq);
|
||||
error[comp] = tot->spread/t->samples[0].neff;
|
||||
}
|
||||
|
||||
@ -197,7 +199,7 @@ if( StateWriteTest(t) ) { \
|
||||
for( comp = 0; comp < t->ncomp; ++comp )
|
||||
oe += sprintf(oe, "\n[" COUNT "] "
|
||||
REAL " +- " REAL,
|
||||
comp + 1, integral[comp], error[comp]);
|
||||
comp + 1, SHOW(integral[comp]), SHOW(error[comp]));
|
||||
Print(out);
|
||||
}
|
||||
|
||||
@ -230,7 +232,7 @@ if( StateWriteTest(t) ) { \
|
||||
tot->maxerrsq = Sq(maxerr);
|
||||
tot->mindevsq = tot->maxerrsq*Sq(t->mindeviation);
|
||||
}
|
||||
nwant = (number)Min(ceil(nneed), MARKMASK/40.);
|
||||
nwant = (number)Min(ceil(nneed), NWANTMAX/40.);
|
||||
|
||||
err = SamplesLookup(t, &t->samples[1], t->key2, nwant,
|
||||
(t->maxeval - t->neval)/t->nregions + 1, t->samples[0].n + 1);
|
||||
@ -308,11 +310,11 @@ refine:
|
||||
Iterate(t, state->iregion, POSTDEPTH, 1, state->totals);
|
||||
|
||||
if( can_adjust ) {
|
||||
cnumber nnew = (tot->spreadsq/Sq(MARKMASK) > tot->maxerrsq) ?
|
||||
MARKMASK :
|
||||
(number)ceil(sqrt(tot->spreadsq/tot->maxerrsq));
|
||||
cnumber nnew = (tot->spreadsq/Sq(NWANTMAX) > tot->maxerrsq) ?
|
||||
NWANTMAX :
|
||||
(number)ceil(sqrtx(tot->spreadsq/tot->maxerrsq));
|
||||
if( nnew > nwant + nwant/64 ) {
|
||||
ccount err = SamplesLookup(t, &t->samples[1], t->key2, nnew,
|
||||
cnumber err = SamplesLookup(t, &t->samples[1], t->key2, nnew,
|
||||
(t->maxeval - t->neval)/t->nregions + 1, t->samples[1].n);
|
||||
fail += Unmark(err)*t->nregions;
|
||||
nwant = nnew;
|
||||
@ -404,14 +406,14 @@ refine:
|
||||
if( chisq > EPS ) chisq /= Max(chiden, NOTZERO);
|
||||
|
||||
if( VERBOSE > 2 ) {
|
||||
#define Out2(f, r) (r)->avg, res->spread/t->samples[f].neff, (r)->err
|
||||
#define Out2(f, r) SHOW((r)->avg), SHOW(res->spread/t->samples[f].neff), SHOW((r)->err)
|
||||
#define Out(f) Out2(f, &tot->phase[f])
|
||||
oe += sprintf(oe, "\n[" COUNT "] "
|
||||
REAL " +- " REAL "(" REAL ")\n "
|
||||
REAL " +- " REAL "(" REAL ")", ++comp, Out(0), Out(1));
|
||||
if( todo == 3 ) oe += sprintf(oe, "\n "
|
||||
REAL " +- " REAL "(" REAL ")", Out2(2, res));
|
||||
oe += sprintf(oe, " \tchisq " REAL, chisq);
|
||||
oe += sprintf(oe, " \tchisq " REAL, SHOW(chisq));
|
||||
}
|
||||
|
||||
tot->integral += avg;
|
||||
@ -419,7 +421,7 @@ refine:
|
||||
tot->chisq += chisq;
|
||||
|
||||
res->avg = avg;
|
||||
res->spread = sqrt(sigsq);
|
||||
res->spread = sqrtx(sigsq);
|
||||
res->chisq = chisq;
|
||||
}
|
||||
|
||||
@ -433,7 +435,7 @@ refine:
|
||||
|
||||
for( tot = state->totals, comp = 0; tot < Tot; ++tot, ++comp ) {
|
||||
integral[comp] = tot->integral;
|
||||
error[comp] = sqrt(tot->sigsq);
|
||||
error[comp] = sqrtx(tot->sigsq);
|
||||
prob[comp] = ChiSquare(tot->chisq, df);
|
||||
}
|
||||
|
||||
@ -442,7 +444,8 @@ refine:
|
||||
for( tot = state->totals, comp = 0; tot < Tot; ++tot, ++comp )
|
||||
oe += sprintf(oe, "\n[" COUNT "] "
|
||||
REAL " +- " REAL " \tchisq " REAL " (" COUNT " df)",
|
||||
comp + 1, integral[comp], error[comp], tot->chisq, df);
|
||||
comp + 1, SHOW(integral[comp]), SHOW(error[comp]),
|
||||
SHOW(tot->chisq), df);
|
||||
Print(out);
|
||||
}
|
||||
|
||||
@ -468,12 +471,12 @@ refine:
|
||||
|
||||
MLPutFunction(stdlink, "Cuba`Divonne`region", 4);
|
||||
|
||||
MLPutRealList(stdlink, bounds, 2*t->ndim);
|
||||
MLPutRealxList(stdlink, bounds, 2*t->ndim);
|
||||
|
||||
MLPutFunction(stdlink, "List", t->ncomp);
|
||||
for( Res = (res = RegionResult(region)) + t->ncomp; res < Res; ++res ) {
|
||||
real r[] = {res->avg, res->spread/neff, res->chisq};
|
||||
MLPutRealList(stdlink, r, Elements(r));
|
||||
MLPutRealxList(stdlink, r, Elements(r));
|
||||
}
|
||||
|
||||
MLPutInteger(stdlink, region->depth + 1); /* misused for df */
|
||||
@ -482,8 +485,7 @@ refine:
|
||||
#endif
|
||||
|
||||
abort:
|
||||
WaitCores(t);
|
||||
FORK_ONLY(FrameFree(t, ShmRm(t));)
|
||||
FORK_ONLY(FrameFree(t, Master);)
|
||||
|
||||
RuleFree(t);
|
||||
SamplesFree(&t->samples[2]);
|
||||
|
6
src/external/libCuba/src/divonne/Iterate.c
vendored
6
src/external/libCuba/src/divonne/Iterate.c
vendored
@ -2,7 +2,7 @@
|
||||
Iterate.c
|
||||
recursion over regions
|
||||
this file is part of Divonne
|
||||
last modified 2 Aug 13 th
|
||||
last modified 12 Mar 15 th
|
||||
*/
|
||||
|
||||
|
||||
@ -85,10 +85,10 @@ FORK_ONLY(more:)
|
||||
|
||||
norm = 1./nsplit--;
|
||||
for( res = RegionResult(parent), c = corr; c < C; ++res, ++c ) {
|
||||
creal diff = fabs(res->avg - c->avg)*norm;
|
||||
creal diff = fabsx(res->avg - c->avg)*norm;
|
||||
c->avg = diff*norm*nsplit;
|
||||
c->err = (c->err == 0) ? 1 : 1 + diff/c->err;
|
||||
c->spread = (c->spread == 0) ? 1 : 1 + diff/sqrt(c->spread);
|
||||
c->spread = (c->spread == 0) ? 1 : 1 + diff/sqrtx(c->spread);
|
||||
}
|
||||
|
||||
for( td = todo; td < tdmax; ++td )
|
||||
|
1370
src/external/libCuba/src/divonne/KorobovCoeff.c-16033
vendored
Normal file
1370
src/external/libCuba/src/divonne/KorobovCoeff.c-16033
vendored
Normal file
File diff suppressed because it is too large
Load Diff
267
src/external/libCuba/src/divonne/KorobovCoeff.c-2423
vendored
Normal file
267
src/external/libCuba/src/divonne/KorobovCoeff.c-2423
vendored
Normal file
@ -0,0 +1,267 @@
|
||||
#define KOROBOV_MINDIM 2
|
||||
#define KOROBOV_MAXDIM 33
|
||||
#define MAXPRIME 2423
|
||||
|
||||
#define Hash(x) ((4973 - x)*(-47 + x))/25245
|
||||
|
||||
static int prime[] = {
|
||||
FIRST,47,53,59,61,67,73,79,83,89,97,101,103,109,113,127,131,137,139,149,
|
||||
151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,
|
||||
251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,
|
||||
359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,
|
||||
463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,
|
||||
593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,
|
||||
701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,
|
||||
827,829,839,853,857,859,863,877,881,887,907,911,919,929,937,941,947,953,
|
||||
967,971,977,983,991,997,1009,1019,1021,1033,1039,1051,1061,1069,1087,
|
||||
1091,1097,1103,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,
|
||||
1217,1229,1237,1249,1259,1277,1279,1289,1297,1307,1319,1327,1361,1367,
|
||||
1373,1381,1399,1409,1423,1427,1429,1439,1453,1459,1481,1489,1499,1511,
|
||||
1523,1543,1553,1567,1579,1597,1607,1621,1637,1657,1663,1669,1697,1709,
|
||||
1723,1741,1759,1777,1789,1811,1831,1847,1867,1889,1907,1931,1951,1973,
|
||||
1999,2027,2053,2081,2111,2143,2179,2221,2269,2333,MarkLast(2423)
|
||||
};
|
||||
|
||||
static short coeff[][32] = {
|
||||
{13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2},
|
||||
{23,17,12,11,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14},
|
||||
{18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5},
|
||||
{17,21,7,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,2,2,2,6,2,2,2,17,7},
|
||||
{18,13,23,5,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2},
|
||||
{27,14,10,14,2,4,13,2,2,16,4,4,4,6,6,6,6,6,6,25,25,31,31,15,31,2,2,31,15,14,14,6},
|
||||
{29,19,27,32,6,8,2,2,2,2,2,8,8,2,2,2,2,9,9,9,9,2,2,2,2,2,2,2,9,9,2,2},
|
||||
{30,19,24,16,22,8,2,2,22,5,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{34,28,13,28,27,27,2,4,2,2,2,16,16,4,20,20,36,20,36,5,5,5,36,36,5,5,5,7,5,7,7,2},
|
||||
{35,19,33,8,21,30,8,2,4,2,4,4,2,2,2,2,2,2,2,2,2,17,2,2,11,25,11,17,17,17,17,17},
|
||||
{39,40,15,21,11,26,13,2,2,13,2,2,2,2,2,2,2,2,2,2,26,26,2,2,2,2,2,2,2,2,2,2},
|
||||
{37,21,35,29,27,19,19,2,2,2,5,15,2,2,15,15,19,19,19,19,19,2,2,2,2,2,19,2,2,2,2,2},
|
||||
{45,44,13,25,17,47,30,2,30,2,2,2,2,2,2,2,2,2,19,19,19,17,17,2,2,2,2,2,2,2,2,2},
|
||||
{35,22,37,9,35,12,35,8,2,2,50,50,2,2,32,32,32,31,13,8,8,8,2,22,50,9,9,9,22,22,22,10},
|
||||
{29,24,43,36,49,2,2,8,4,25,49,25,2,2,8,10,10,10,5,5,5,40,10,33,40,40,2,27,10,25,25,25},
|
||||
{50,18,32,39,21,2,2,2,4,4,36,36,14,14,14,14,2,2,2,17,17,17,16,16,2,14,14,14,14,2,2,2},
|
||||
{31,28,45,20,18,43,43,13,28,2,2,2,31,31,31,31,31,2,2,2,43,43,2,2,2,2,2,2,2,2,30,2},
|
||||
{39,15,41,7,24,2,2,30,40,2,2,25,25,25,25,2,2,2,2,2,2,6,6,2,25,2,5,2,2,25,2,2},
|
||||
{44,20,29,39,7,21,21,21,2,2,45,2,2,2,49,49,49,49,49,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{56,20,22,13,18,35,35,6,2,4,2,4,2,2,2,23,16,16,4,23,2,34,52,2,34,2,4,2,2,2,23,16},
|
||||
{46,32,17,18,29,27,31,31,31,2,2,4,15,2,2,2,2,2,2,2,2,2,2,2,2,2,23,32,32,32,15,15},
|
||||
{62,42,43,17,23,13,13,2,2,13,2,2,2,2,2,2,2,10,2,2,2,2,9,10,2,2,2,19,9,9,9,9},
|
||||
{46,49,49,52,27,7,20,2,2,6,6,13,13,13,2,13,13,2,2,2,2,2,2,34,34,2,2,2,2,2,2,2},
|
||||
{64,34,16,28,16,51,47,2,2,2,6,18,39,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,2},
|
||||
{74,26,44,25,50,24,54,39,58,42,2,42,42,2,2,2,2,2,2,2,2,33,33,2,2,39,11,2,2,58,39,58},
|
||||
{70,22,50,22,16,9,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{74,21,17,25,35,33,10,2,10,20,20,57,57,57,2,2,57,2,2,2,2,2,2,2,13,2,2,2,2,2,2,2},
|
||||
{81,18,10,11,47,38,71,37,2,37,2,2,2,2,2,26,26,26,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{71,68,68,27,71,39,81,44,2,2,2,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{55,30,85,42,16,36,45,67,2,2,68,2,2,2,2,2,2,2,68,10,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{64,17,24,26,49,12,10,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,59,2,2},
|
||||
{68,57,23,38,61,38,13,13,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,68,15,2,44,44,44,2,2,2},
|
||||
{94,28,58,29,13,5,15,8,66,2,2,2,39,39,15,66,2,2,6,6,2,2,66,66,66,66,2,2,2,2,2,66},
|
||||
{94,85,9,41,41,37,29,29,17,2,2,2,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,8},
|
||||
{89,32,75,77,77,13,2,30,30,2,2,2,2,2,2,2,2,2,2,67,67,2,2,2,2,2,2,2,2,8,19,32},
|
||||
{70,45,58,63,67,10,72,72,70,6,2,36,2,70,70,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{101,33,76,13,45,63,2,2,6,19,2,2,32,32,32,32,32,65,2,63,63,11,11,11,19,19,19,19,9,63,63,63},
|
||||
{70,89,44,37,19,45,2,2,2,8,10,8,54,54,80,80,80,80,80,2,116,2,116,2,2,80,40,51,100,100,8,2},
|
||||
{71,54,83,51,42,98,2,2,8,8,14,30,93,22,15,15,30,30,30,44,44,44,2,2,22,22,22,117,44,11,11,11},
|
||||
{109,37,51,113,17,10,2,2,17,17,55,2,55,55,55,55,55,55,2,2,2,57,48,48,55,55,2,2,55,2,2,55},
|
||||
{75,38,68,89,11,52,2,2,81,39,2,38,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2},
|
||||
{80,38,62,66,39,59,2,36,48,33,2,2,41,2,48,48,2,2,2,2,2,2,48,2,2,2,2,2,2,2,2,2},
|
||||
{81,84,35,34,20,93,2,12,12,12,2,96,2,96,96,2,96,2,2,2,2,2,2,2,2,2,2,2,2,56,56,56},
|
||||
{109,72,60,96,67,32,85,84,27,91,91,2,10,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{104,32,56,46,77,11,35,35,24,56,19,2,2,2,78,2,2,75,2,2,2,2,78,2,2,2,2,2,2,2,2,2},
|
||||
{81,103,25,35,28,15,20,20,20,2,2,2,2,20,20,20,107,107,2,2,2,2,2,2,2,2,2,2,2,2,13,13},
|
||||
{119,75,42,29,74,23,54,36,39,2,2,4,4,19,19,2,2,2,2,2,2,2,2,54,2,2,2,2,2,2,2,54},
|
||||
{115,73,22,102,75,138,16,73,50,16,2,50,2,2,2,133,2,2,2,2,2,2,2,2,2,2,2,2,2,33,33,33},
|
||||
{119,48,66,51,14,22,20,20,2,2,2,2,2,60,2,2,2,2,2,2,2,2,60,2,2,2,2,2,2,60,2,65},
|
||||
{121,94,80,29,51,69,42,36,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2},
|
||||
{129,123,41,79,43,34,24,11,2,2,4,2,2,2,2,75,16,16,16,75,75,75,16,16,16,25,2,99,2,2,75,16},
|
||||
{128,33,35,68,22,8,62,94,2,2,2,62,62,2,98,2,2,4,98,2,2,32,81,32,32,32,98,98,98,98,98,98},
|
||||
{101,109,154,15,57,6,27,36,2,2,37,37,2,2,2,2,2,2,2,107,2,2,2,107,107,2,2,2,2,2,2,2},
|
||||
{106,40,24,38,61,118,106,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{149,111,58,79,127,13,41,33,27,16,30,2,61,2,72,2,2,2,2,2,2,2,2,2,2,2,2,75,75,2,2,2},
|
||||
{105,92,43,156,25,53,57,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{99,40,62,67,66,29,99,99,99,78,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79},
|
||||
{109,42,96,95,66,41,103,84,13,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{111,72,16,89,25,86,117,29,14,14,2,2,2,2,2,60,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{106,72,49,94,140,44,97,157,75,2,2,4,123,123,2,2,123,123,123,123,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{115,67,74,32,43,50,21,36,135,36,85,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{151,71,157,42,41,37,80,27,18,2,2,2,2,2,2,2,2,2,2,2,2,2,115,128,128,128,128,128,32,2,128,80},
|
||||
{119,91,38,30,92,44,32,76,22,2,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,129,2,2,129,2,2,2},
|
||||
{121,126,31,52,120,37,57,10,171,2,2,2,2,35,35,35,2,2,97,97,97,97,97,97,97,35,35,35,97,97,97,2},
|
||||
{155,86,49,104,87,94,64,45,61,91,91,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{164,121,44,166,47,33,7,15,13,2,2,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{128,120,133,17,71,52,25,107,42,21,21,2,2,2,2,4,4,96,2,9,9,2,9,94,94,94,94,94,94,94,94,96},
|
||||
{179,82,157,76,61,35,13,90,197,2,69,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39},
|
||||
{136,136,148,63,66,10,169,95,95,163,30,28,28,2,41,130,2,2,2,21,2,2,2,2,2,2,2,2,2,2,2,36},
|
||||
{131,40,112,63,55,30,53,79,79,79,2,79,2,2,2,2,2,79,2,2,2,2,14,36,2,21,21,21,21,2,2,91},
|
||||
{165,81,92,48,9,110,12,40,40,34,2,2,2,107,107,107,2,107,2,2,2,2,2,2,2,2,2,2,2,15,41,41},
|
||||
{169,66,170,97,35,56,55,86,32,32,2,2,2,2,14,2,40,2,37,2,2,37,40,40,40,2,2,2,37,37,37,37},
|
||||
{135,63,126,156,70,18,49,143,6,117,2,109,109,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{179,104,117,56,132,56,190,130,130,15,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{193,59,51,68,68,15,170,170,170,143,143,12,2,2,2,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{145,101,56,65,23,76,110,2,4,4,4,146,146,146,2,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,146,146},
|
||||
{144,129,26,98,36,46,47,52,52,52,82,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,91,2,2},
|
||||
{145,78,166,171,56,20,63,2,2,33,33,33,33,2,78,47,47,47,47,47,2,2,2,2,2,78,78,78,2,2,2,2},
|
||||
{191,69,176,54,47,75,167,2,2,2,188,188,188,30,30,2,67,67,117,2,117,117,117,2,2,36,2,2,2,2,2,2},
|
||||
{186,96,29,122,47,96,170,157,157,157,157,108,159,2,195,195,26,26,26,26,26,2,2,2,2,132,132,132,2,2,2,2},
|
||||
{151,118,226,91,54,49,33,2,2,2,2,4,4,4,143,143,2,2,143,25,25,25,2,143,143,143,143,143,143,143,143,143},
|
||||
{144,91,237,82,81,75,138,163,163,163,117,117,44,2,44,136,136,136,136,2,2,2,2,2,122,122,122,122,2,2,2,136},
|
||||
{189,78,178,64,118,27,189,2,2,67,67,110,110,110,110,2,28,28,2,2,2,2,2,2,2,102,2,2,2,2,2,2},
|
||||
{165,202,83,76,125,65,42,2,44,44,23,2,23,23,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{209,204,92,75,85,146,104,2,7,18,8,2,2,2,204,95,95,95,2,2,2,95,95,95,95,95,95,95,2,2,2,95},
|
||||
{169,68,89,16,193,82,33,262,262,175,148,148,148,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{171,162,78,43,61,17,112,10,171,182,118,33,2,2,2,2,118,2,2,2,2,2,2,151,2,2,2,2,2,2,2,2},
|
||||
{211,121,119,55,90,211,96,89,225,25,178,36,36,36,2,2,108,2,2,2,2,2,2,2,2,2,2,2,2,184,2,2},
|
||||
{154,101,83,17,16,210,41,79,70,158,2,27,27,2,2,2,2,2,2,2,2,2,2,2,2,153,2,2,2,2,2,2},
|
||||
{169,179,130,79,148,180,136,17,47,119,2,119,119,169,169,2,169,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{241,171,148,31,172,34,66,60,156,140,2,2,2,75,75,2,2,2,2,2,2,2,190,190,2,2,2,30,2,2,2,2},
|
||||
{229,189,183,106,118,138,82,149,265,39,2,2,265,2,2,2,2,2,2,130,2,2,2,71,71,2,2,2,71,2,2,71},
|
||||
{165,157,127,21,64,15,80,130,130,130,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,74,2},
|
||||
{221,130,203,84,83,83,29,121,54,54,2,141,2,2,94,94,94,4,4,4,2,4,2,2,2,54,54,108,16,16,94,52},
|
||||
{230,166,20,160,121,102,153,94,16,67,2,2,2,2,2,2,97,97,97,2,2,97,97,2,97,97,97,97,97,97,97,97},
|
||||
{181,79,137,119,139,24,77,17,50,25,25,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{239,242,192,40,41,62,124,193,193,31,193,2,2,2,2,2,2,2,2,2,2,2,2,148,2,2,2,2,2,2,2,2},
|
||||
{239,178,73,122,239,51,95,48,78,88,78,2,2,2,2,2,2,2,2,2,2,2,144,144,2,2,144,144,144,2,144,144},
|
||||
{234,117,198,34,143,21,74,6,252,252,98,2,2,2,2,197,38,2,2,2,2,2,47,2,47,47,47,47,2,2,2,47},
|
||||
{179,110,38,28,58,39,16,29,42,125,202,8,8,129,4,4,2,2,2,67,67,2,2,2,2,2,2,8,67,67,2,2},
|
||||
{246,53,189,50,18,59,179,179,7,137,137,2,2,103,103,103,103,40,40,40,2,2,2,2,73,73,73,2,103,103,103,103},
|
||||
{239,133,87,92,193,12,206,238,238,238,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{191,244,60,193,18,32,193,104,74,125,125,66,2,2,2,2,2,2,2,2,2,2,125,125,2,125,125,125,2,2,2,2},
|
||||
{177,74,90,91,172,219,63,84,32,2,2,196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{253,143,54,39,122,32,75,107,234,2,6,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{282,89,71,88,30,23,81,105,105,2,2,105,105,131,107,2,2,2,2,2,195,195,2,2,29,29,21,21,128,195,195,195},
|
||||
{259,115,171,40,156,71,67,24,24,2,2,2,24,4,4,4,2,234,2,2,2,2,2,2,2,2,2,74,74,2,2,2},
|
||||
{264,237,49,203,247,108,75,75,75,2,2,32,16,8,16,16,16,164,14,164,2,2,32,16,8,16,16,32,42,42,42,2},
|
||||
{264,106,89,51,29,226,23,286,286,151,151,151,151,151,2,2,2,2,2,2,31,31,31,2,2,2,2,2,2,2,2,284},
|
||||
{194,215,82,23,213,23,108,127,74,2,201,32,178,2,285,2,2,2,2,285,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{196,267,251,111,231,14,30,52,95,2,154,53,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{266,67,22,101,102,157,53,95,130,2,42,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{281,205,107,178,236,122,122,316,76,215,215,2,60,2,2,2,2,2,2,227,2,2,2,2,2,2,2,2,27,2,2,2},
|
||||
{271,89,65,195,132,162,102,45,56,174,104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{200,169,170,121,155,68,131,167,78,113,113,2,2,64,2,2,2,2,2,2,2,2,2,2,2,2,2,173,2,2,2,2},
|
||||
{288,143,265,264,71,19,231,169,27,27,27,2,2,2,2,2,2,2,2,2,2,2,2,2,51,2,2,2,2,2,2,2},
|
||||
{311,141,96,173,90,119,134,151,35,252,39,2,39,39,2,2,2,2,2,2,2,2,2,113,113,2,2,2,2,2,2,113},
|
||||
{311,230,52,138,225,346,162,216,216,91,160,182,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{275,167,128,244,184,184,44,210,237,139,139,139,139,2,2,2,2,2,2,2,2,2,2,73,2,2,2,2,2,2,2,2},
|
||||
{176,156,83,135,46,197,108,63,33,33,33,2,133,2,213,213,213,213,133,133,2,133,2,2,133,133,2,2,2,2,2,2},
|
||||
{283,125,141,192,89,181,106,208,124,124,2,112,112,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{289,191,171,152,191,173,54,13,21,56,56,56,2,2,2,2,2,2,2,2,2,220,2,2,2,2,2,2,2,2,2,2},
|
||||
{334,305,132,132,99,126,54,116,164,105,2,105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,287,2,2,2,2},
|
||||
{240,166,44,193,153,333,15,99,246,99,2,2,99,99,2,2,2,2,195,195,195,2,195,195,2,263,263,2,195,195,195,263},
|
||||
{246,194,265,79,225,65,24,62,46,181,2,2,2,314,2,2,2,2,2,2,2,215,2,2,2,2,2,2,2,2,2,2},
|
||||
{229,334,285,302,21,26,24,97,64,40,2,2,2,231,231,231,231,65,2,148,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{251,295,55,249,135,173,164,78,261,261,2,2,2,2,114,2,2,2,2,2,256,142,142,2,2,2,2,2,2,2,2,185},
|
||||
{232,153,55,60,181,79,107,70,29,35,2,2,58,58,2,58,2,2,2,2,61,61,2,61,61,2,2,61,61,90,2,90},
|
||||
{246,116,45,146,109,90,32,103,133,119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{246,113,146,232,162,262,204,47,45,331,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{360,150,84,275,13,26,368,49,244,244,63,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{239,295,174,87,30,87,85,36,103,36,2,278,2,2,2,2,2,2,163,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{356,300,75,310,123,301,200,107,183,37,218,37,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{358,207,168,150,150,21,156,50,195,275,275,275,2,2,2,2,2,251,2,2,2,251,251,251,251,251,251,251,251,251,2,2},
|
||||
{322,194,234,62,236,147,239,400,255,255,80,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{326,276,134,100,143,113,115,221,13,339,194,194,194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{192,213,113,174,403,117,342,342,311,35,35,2,2,2,2,2,2,2,2,101,2,2,2,2,2,2,2,2,2,101,101,101},
|
||||
{264,273,316,53,40,330,51,285,115,219,147,2,2,2,335,2,2,2,2,2,173,2,173,2,2,173,173,173,173,173,173,83},
|
||||
{254,293,407,118,54,296,160,231,4,4,93,2,2,2,2,2,60,61,2,2,120,127,127,127,88,88,88,88,88,88,88,88},
|
||||
{341,78,336,263,281,164,99,334,296,114,109,2,163,163,163,163,2,2,2,2,2,2,2,125,125,292,292,292,292,125,125,125},
|
||||
{355,87,212,100,89,210,133,344,120,45,45,138,138,138,138,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{274,141,46,219,158,284,38,79,73,185,35,6,81,2,2,2,2,53,2,2,81,81,2,81,2,2,2,53,53,53,53,53},
|
||||
{349,303,439,19,95,240,174,191,2,162,162,2,2,2,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{360,91,201,205,67,181,59,77,2,44,103,103,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,125},
|
||||
{283,154,261,91,77,147,227,105,116,311,256,256,2,116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,32,2},
|
||||
{287,288,111,89,249,370,55,16,248,67,67,115,2,2,134,134,2,2,2,2,2,2,2,2,2,2,2,2,2,22,22,22},
|
||||
{284,270,282,37,29,181,160,49,285,285,374,250,2,374,374,2,2,2,179,179,35,2,179,179,2,179,179,2,2,285,285,285},
|
||||
{359,305,52,36,243,231,7,92,2,68,68,307,62,45,2,2,112,311,311,311,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{288,119,218,137,364,38,27,380,2,2,211,23,33,2,2,2,2,2,225,225,225,2,2,225,225,225,2,2,2,2,2,2},
|
||||
{277,155,232,309,370,365,348,75,214,214,214,4,4,2,2,2,210,210,210,210,210,210,210,2,2,2,2,2,2,2,2,2},
|
||||
{292,204,91,41,124,190,107,322,125,125,125,125,125,25,25,62,2,2,146,146,2,2,62,146,2,146,114,146,114,2,2,2},
|
||||
{282,195,192,409,68,99,253,106,2,2,2,231,55,55,2,323,323,55,55,285,285,285,285,2,2,2,2,2,2,285,285,323},
|
||||
{282,222,268,86,21,109,353,408,2,2,2,2,135,12,12,216,241,241,241,241,241,241,241,241,241,303,303,303,135,135,135,2},
|
||||
{374,94,89,257,137,246,186,196,2,2,2,2,2,454,122,122,122,122,2,2,2,28,28,94,94,94,94,94,122,122,122,122},
|
||||
{288,370,141,284,207,192,450,67,2,2,2,183,217,217,217,183,183,167,202,202,202,202,167,167,2,2,2,164,164,80,167,167},
|
||||
{286,293,199,39,158,332,242,103,2,2,2,408,266,315,2,2,365,253,315,315,315,315,315,2,2,315,2,2,2,2,2,2},
|
||||
{398,88,78,57,260,203,203,43,131,131,131,204,204,322,204,2,102,2,325,325,325,325,2,2,2,2,2,2,2,2,2,2},
|
||||
{390,174,70,155,163,67,225,49,2,34,34,151,151,2,2,111,2,2,111,111,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{408,136,71,63,63,159,222,68,181,181,124,227,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{294,169,79,242,160,123,178,290,186,186,56,399,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{415,228,69,68,193,122,21,362,33,22,362,57,2,2,2,2,46,46,196,196,196,2,196,196,196,2,196,2,2,2,2,2},
|
||||
{417,238,147,165,346,19,92,164,266,291,291,43,2,2,2,345,2,2,2,345,345,2,2,2,2,2,345,2,2,2,2,2},
|
||||
{456,192,86,182,35,174,342,102,210,210,210,393,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,256,256,158},
|
||||
{432,168,63,154,166,46,479,145,144,288,288,288,288,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{341,256,113,85,188,233,161,29,110,167,91,91,253,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{311,360,312,158,73,16,106,209,472,48,24,203,203,2,2,2,2,234,234,234,2,234,234,203,2,2,2,234,234,234,234,234},
|
||||
{437,196,161,100,132,246,395,187,35,35,35,2,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{438,174,338,145,155,276,422,374,4,463,463,99,224,70,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{426,225,211,130,325,283,353,96,282,23,299,2,2,2,63,63,2,276,276,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{430,101,288,38,200,332,325,193,123,123,88,2,2,2,2,2,231,231,139,139,139,139,139,139,139,139,139,139,139,139,139,139},
|
||||
{434,143,308,389,365,363,174,63,121,125,260,2,2,260,260,2,2,2,2,2,2,2,2,2,2,258,2,2,2,258,2,2},
|
||||
{453,123,201,141,229,223,234,494,102,102,102,2,2,102,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,252},
|
||||
{438,168,65,264,304,74,168,88,114,132,187,2,127,127,2,2,2,2,2,81,81,56,2,2,2,307,2,2,2,2,81,81},
|
||||
{324,181,141,129,33,171,173,291,227,373,52,301,301,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{335,114,55,47,33,173,287,345,198,198,136,238,238,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{456,162,188,223,408,209,28,164,299,299,258,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{360,397,130,172,407,479,295,13,38,199,199,346,2,2,2,2,2,2,145,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{512,136,129,361,180,61,274,128,422,27,292,165,2,2,2,2,2,2,363,117,117,117,117,2,2,2,2,363,2,2,2,2},
|
||||
{478,433,483,302,200,227,273,27,171,171,371,102,2,2,2,2,2,20,2,2,2,2,2,2,2,2,403,403,2,2,2,2},
|
||||
{485,158,454,86,212,60,93,40,209,188,188,106,2,231,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{390,448,111,145,47,555,367,317,315,52,429,435,429,429,2,2,2,2,2,2,2,2,229,2,2,229,2,2,2,229,2,2},
|
||||
{378,406,112,198,539,550,516,59,240,240,23,316,2,122,2,2,2,2,2,2,2,2,2,2,111,111,2,2,2,95,2,2},
|
||||
{495,406,306,239,172,323,236,50,37,435,2,310,56,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{397,393,191,269,462,151,264,134,307,307,2,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,159,2,2,2,2,2},
|
||||
{485,491,325,149,122,145,228,100,311,64,2,62,137,2,137,2,2,2,2,2,2,2,392,2,2,2,2,2,2,2,2,2},
|
||||
{507,195,130,401,363,171,483,20,86,464,2,89,89,2,26,2,2,2,2,2,425,425,2,2,2,2,2,2,2,2,2,2},
|
||||
{380,220,87,122,242,78,207,371,95,305,2,2,2,2,440,440,445,358,358,331,331,358,445,445,445,445,445,445,445,445,445,445},
|
||||
{507,221,247,137,182,90,28,207,325,438,2,2,2,2,2,187,232,438,2,2,68,37,37,37,37,37,37,37,37,37,161,2},
|
||||
{509,265,101,126,203,86,152,416,352,85,2,2,2,284,391,368,2,2,152,2,2,2,325,2,2,2,2,2,2,2,2,2},
|
||||
{572,359,332,480,68,535,59,504,365,21,2,2,246,54,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{415,178,178,372,415,400,73,82,348,99,2,23,325,44,2,2,2,2,2,2,2,2,325,2,2,2,2,2,2,2,2,2},
|
||||
{430,275,236,361,42,552,368,236,653,74,65,458,288,307,307,2,2,2,2,2,2,2,65,65,2,2,2,2,2,2,2,2},
|
||||
{434,139,58,437,130,441,188,15,63,145,145,145,300,2,2,2,2,300,2,2,2,2,2,2,2,2,401,401,401,401,401,401},
|
||||
{542,138,266,514,552,202,103,197,574,48,2,96,96,2,2,96,96,217,2,2,2,2,2,2,2,2,2,2,2,2,2,217},
|
||||
{546,494,72,272,550,219,213,209,169,404,69,464,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{422,413,561,110,242,62,436,478,18,150,606,88,643,2,249,2,2,2,2,456,2,2,2,2,2,2,2,2,2,2,2,456},
|
||||
{555,516,310,438,290,559,52,265,248,193,285,441,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{555,300,232,386,470,300,355,177,57,407,450,279,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{534,274,194,220,575,81,206,544,341,85,137,429,429,429,429,344,2,2,2,2,2,315,315,315,315,315,315,72,72,72,2,2},
|
||||
{576,301,142,329,96,41,302,528,126,112,206,206,2,2,2,2,2,2,206,206,2,206,206,2,191,206,206,191,191,191,191,206},
|
||||
{622,526,294,56,498,176,237,351,25,26,474,55,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{446,163,469,481,240,278,51,373,491,13,22,419,2,2,2,2,2,2,2,2,2,176,176,2,2,2,2,2,2,2,2,2},
|
||||
{445,223,102,108,120,166,68,214,737,504,96,96,206,377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39,528},
|
||||
{425,355,128,58,194,82,438,117,10,34,34,35,112,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{433,294,192,205,152,70,99,68,392,169,309,390,390,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,199,2,2,2},
|
||||
{437,561,384,619,363,420,614,117,217,247,405,142,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{437,133,516,423,305,90,135,25,266,487,6,286,286,2,2,2,2,2,2,2,2,2,2,2,2,510,510,2,2,2,2,2},
|
||||
{610,477,478,516,318,184,267,423,190,494,494,2,336,336,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{590,463,461,162,162,622,167,254,29,377,377,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{448,126,129,168,209,340,40,96,509,509,509,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{635,212,284,356,187,591,275,361,194,317,488,2,2,2,2,2,2,97,6,2,6,247,2,2,2,2,2,2,2,2,2,6},
|
||||
{612,395,104,86,264,321,521,325,252,53,178,100,100,100,16,343,343,343,343,343,2,2,2,2,2,2,2,2,2,343,343,343},
|
||||
{486,428,287,472,292,141,504,178,585,98,282,2,2,2,2,2,2,2,2,2,2,2,2,284,284,284,78,284,2,2,2,2},
|
||||
{462,579,236,447,60,162,427,258,73,742,742,2,742,742,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{469,507,276,227,66,237,260,386,27,666,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{626,196,111,465,386,431,181,414,614,391,349,318,389,2,389,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{653,169,261,533,488,282,213,443,337,480,503,174,534,2,2,2,2,2,534,2,2,2,2,534,2,2,2,2,534,2,2,2},
|
||||
{639,253,95,380,108,448,223,254,381,30,6,644,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{512,347,65,546,434,87,18,123,672,412,316,6,699,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{657,233,108,38,147,53,136,168,408,477,477,279,268,289,2,2,2,2,2,2,289,2,2,2,2,2,2,2,2,289,289,2},
|
||||
{521,249,388,155,467,245,134,311,72,312,312,623,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{669,421,230,70,212,845,237,347,148,76,823,472,2,2,2,132,2,2,2,2,2,2,2,383,132,383,2,2,383,383,383,383},
|
||||
{672,150,164,622,196,75,302,119,42,314,314,132,60,60,60,298,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{705,302,411,705,691,160,809,40,32,867,826,826,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{707,323,409,27,31,157,492,463,886,412,251,251,304,190,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{793,279,264,566,252,495,872,492,482,107,294,503,350,350,2,2,2,2,2,2,2,285,285,273,273,273,273,2,2,2,2,2},
|
||||
{791,275,60,137,352,839,67,476,356,216,216,563,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{709,509,697,145,252,194,304,192,192,623,623,4,423,2,2,2,199,423,2,2,2,222,222,2,2,623,623,623,623,623,2,222},
|
||||
{539,310,463,103,553,45,609,326,197,2,62,113,272,2,62,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{750,703,182,242,92,335,272,466,594,2,701,569,474,129,140,140,2,507,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{872,630,513,218,719,174,197,104,86,281,281,281,541,642,281,94,2,45,94,2,335,335,2,2,2,2,2,2,2,2,2,84},
|
||||
{744,466,389,280,229,134,363,177,389,2,2,2,536,273,536,536,536,536,168,45,45,45,45,2,2,2,2,2,2,2,2,2},
|
||||
{468,430,849,689,202,427,45,34,105,2,2,2,2,4,4,4,4,4,4,4,2,2,2,4,4,4,4,4,2,2,2,2},
|
||||
{563,325,717,766,440,705,290,123,228,2,2,2,32,64,146,2,2,2,116,79,79,2,146,146,79,79,79,2,2,146,146,79},
|
||||
{781,638,410,399,336,465,856,426,28,2,4,4,6,6,2,2,2,449,372,372,449,449,449,2,2,449,449,449,449,449,449,2},
|
||||
{818,280,99,873,165,426,341,74,479,342,727,684,684,662,662,2,2,2,2,2,2,662,2,2,2,2,2,2,2,2,2,2},
|
||||
{901,490,693,410,666,119,703,593,201,61,70,70,774,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,418,418},
|
||||
{859,584,475,745,506,900,40,869,143,612,175,275,209,12,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{612,237,272,53,534,682,372,935,494,536,536,599,599,599,2,536,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{708,442,186,698,345,103,687,463,163,416,416,107,2,2,2,375,375,416,6,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{927,493,988,194,97,1006,377,578,105,248,707,784,98,784,2,2,2,2,2,2,2,2,2,370,370,2,370,2,2,2,2,2}
|
||||
};
|
356
src/external/libCuba/src/divonne/KorobovCoeff.c-3319
vendored
Normal file
356
src/external/libCuba/src/divonne/KorobovCoeff.c-3319
vendored
Normal file
@ -0,0 +1,356 @@
|
||||
#define KOROBOV_MINDIM 2
|
||||
#define KOROBOV_MAXDIM 33
|
||||
#define MAXPRIME 3319
|
||||
|
||||
#define Hash(x) ((6967 - x)*(-47 + x))/36952
|
||||
|
||||
static int prime[] = {
|
||||
FIRST,47,53,59,61,67,73,79,83,89,97,101,107,113,127,131,137,139,149,
|
||||
151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,
|
||||
251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,
|
||||
359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,
|
||||
463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,
|
||||
593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,
|
||||
701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,
|
||||
827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,
|
||||
953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,
|
||||
1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,
|
||||
1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,
|
||||
1259,1277,1279,1283,1291,1297,1307,1319,1321,1327,1361,1367,1373,1381,
|
||||
1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1493,
|
||||
1499,1511,1523,1531,1543,1549,1559,1567,1579,1583,1597,1607,1613,1621,
|
||||
1637,1657,1663,1667,1669,1693,1697,1699,1709,1723,1733,1747,1753,1759,
|
||||
1777,1787,1801,1811,1823,1831,1847,1861,1867,1877,1889,1901,1913,1931,
|
||||
1933,1949,1951,1973,1979,1993,2003,2017,2029,2039,2053,2069,2081,2099,
|
||||
2111,2129,2137,2153,2161,2179,2203,2207,2221,2237,2243,2267,2273,2293,
|
||||
2309,2333,2339,2351,2371,2389,2399,2417,2437,2459,2473,2503,2521,2531,
|
||||
2549,2557,2591,2609,2621,2647,2671,2693,2713,2741,2767,2789,2819,2843,
|
||||
2879,2897,2927,2963,2999,3037,3079,3121,3181,3229,MarkLast(3319)
|
||||
};
|
||||
|
||||
static short coeff[][32] = {
|
||||
{13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2},
|
||||
{23,17,12,11,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14},
|
||||
{18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5},
|
||||
{17,21,7,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,2,2,2,6,2,2,2,17,7},
|
||||
{18,13,23,5,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2},
|
||||
{27,14,10,14,2,4,13,2,2,16,4,4,4,6,6,6,6,6,6,25,25,31,31,15,31,2,2,31,15,14,14,6},
|
||||
{29,19,27,32,6,8,2,2,2,2,2,8,8,2,2,2,2,9,9,9,9,2,2,2,2,2,2,2,9,9,2,2},
|
||||
{30,19,24,16,22,8,2,2,22,5,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{34,28,13,28,27,27,2,4,2,2,2,16,16,4,20,20,36,20,36,5,5,5,36,36,5,5,5,7,5,7,7,2},
|
||||
{35,19,33,8,21,30,8,2,4,2,4,4,2,2,2,2,2,2,2,2,2,17,2,2,11,25,11,17,17,17,17,17},
|
||||
{39,40,15,21,11,26,13,2,2,13,2,2,2,2,2,2,2,2,2,2,26,26,2,2,2,2,2,2,2,2,2,2},
|
||||
{41,22,15,7,26,29,29,2,2,2,2,2,2,41,41,2,2,2,31,31,2,31,31,2,31,2,2,2,2,2,2,2},
|
||||
{35,22,37,9,35,12,35,8,2,2,50,50,2,2,32,32,32,31,13,8,8,8,2,22,50,9,9,9,22,22,22,10},
|
||||
{29,24,43,36,49,2,2,8,4,25,49,25,2,2,8,10,10,10,5,5,5,40,10,33,40,40,2,27,10,25,25,25},
|
||||
{50,18,32,39,21,2,2,2,4,4,36,36,14,14,14,14,2,2,2,17,17,17,16,16,2,14,14,14,14,2,2,2},
|
||||
{31,28,45,20,18,43,43,13,28,2,2,2,31,31,31,31,31,2,2,2,43,43,2,2,2,2,2,2,2,2,30,2},
|
||||
{39,15,41,7,24,2,2,30,40,2,2,25,25,25,25,2,2,2,2,2,2,6,6,2,25,2,5,2,2,25,2,2},
|
||||
{44,20,29,39,7,21,21,21,2,2,45,2,2,2,49,49,49,49,49,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{56,20,22,13,18,35,35,6,2,4,2,4,2,2,2,23,16,16,4,23,2,34,52,2,34,2,4,2,2,2,23,16},
|
||||
{46,32,17,18,29,27,31,31,31,2,2,4,15,2,2,2,2,2,2,2,2,2,2,2,2,2,23,32,32,32,15,15},
|
||||
{62,42,43,17,23,13,13,2,2,13,2,2,2,2,2,2,2,10,2,2,2,2,9,10,2,2,2,19,9,9,9,9},
|
||||
{46,49,49,52,27,7,20,2,2,6,6,13,13,13,2,13,13,2,2,2,2,2,2,34,34,2,2,2,2,2,2,2},
|
||||
{64,34,16,28,16,51,47,2,2,2,6,18,39,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,2},
|
||||
{74,26,44,25,50,24,54,39,58,42,2,42,42,2,2,2,2,2,2,2,2,33,33,2,2,39,11,2,2,58,39,58},
|
||||
{70,22,50,22,16,9,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{74,21,17,25,35,33,10,2,10,20,20,57,57,57,2,2,57,2,2,2,2,2,2,2,13,2,2,2,2,2,2,2},
|
||||
{81,18,10,11,47,38,71,37,2,37,2,2,2,2,2,26,26,26,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{71,68,68,27,71,39,81,44,2,2,2,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{55,30,85,42,16,36,45,67,2,2,68,2,2,2,2,2,2,2,68,10,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{64,17,24,26,49,12,10,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,59,2,2},
|
||||
{68,57,23,38,61,38,13,13,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,68,15,2,44,44,44,2,2,2},
|
||||
{94,28,58,29,13,5,15,8,66,2,2,2,39,39,15,66,2,2,6,6,2,2,66,66,66,66,2,2,2,2,2,66},
|
||||
{94,85,9,41,41,37,29,29,17,2,2,2,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,8},
|
||||
{89,32,75,77,77,13,2,30,30,2,2,2,2,2,2,2,2,2,2,67,67,2,2,2,2,2,2,2,2,8,19,32},
|
||||
{70,45,58,63,67,10,72,72,70,6,2,36,2,70,70,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{101,33,76,13,45,63,2,2,6,19,2,2,32,32,32,32,32,65,2,63,63,11,11,11,19,19,19,19,9,63,63,63},
|
||||
{70,89,44,37,19,45,2,2,2,8,10,8,54,54,80,80,80,80,80,2,116,2,116,2,2,80,40,51,100,100,8,2},
|
||||
{71,54,83,51,42,98,2,2,8,8,14,30,93,22,15,15,30,30,30,44,44,44,2,2,22,22,22,117,44,11,11,11},
|
||||
{109,37,51,113,17,10,2,2,17,17,55,2,55,55,55,55,55,55,2,2,2,57,48,48,55,55,2,2,55,2,2,55},
|
||||
{75,38,68,89,11,52,2,2,81,39,2,38,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2},
|
||||
{80,38,62,66,39,59,2,36,48,33,2,2,41,2,48,48,2,2,2,2,2,2,48,2,2,2,2,2,2,2,2,2},
|
||||
{81,84,35,34,20,93,2,12,12,12,2,96,2,96,96,2,96,2,2,2,2,2,2,2,2,2,2,2,2,56,56,56},
|
||||
{109,72,60,96,67,32,85,84,27,91,91,2,10,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{104,32,56,46,77,11,35,35,24,56,19,2,2,2,78,2,2,75,2,2,2,2,78,2,2,2,2,2,2,2,2,2},
|
||||
{81,103,25,35,28,15,20,20,20,2,2,2,2,20,20,20,107,107,2,2,2,2,2,2,2,2,2,2,2,2,13,13},
|
||||
{119,75,42,29,74,23,54,36,39,2,2,4,4,19,19,2,2,2,2,2,2,2,2,54,2,2,2,2,2,2,2,54},
|
||||
{115,73,22,102,75,138,16,73,50,16,2,50,2,2,2,133,2,2,2,2,2,2,2,2,2,2,2,2,2,33,33,33},
|
||||
{119,48,66,51,14,22,20,20,2,2,2,2,2,60,2,2,2,2,2,2,2,2,60,2,2,2,2,2,2,60,2,65},
|
||||
{121,94,80,29,51,69,42,36,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2},
|
||||
{129,123,41,79,43,34,24,11,2,2,4,2,2,2,2,75,16,16,16,75,75,75,16,16,16,25,2,99,2,2,75,16},
|
||||
{128,33,35,68,22,8,62,94,2,2,2,62,62,2,98,2,2,4,98,2,2,32,81,32,32,32,98,98,98,98,98,98},
|
||||
{101,109,154,15,57,6,27,36,2,2,37,37,2,2,2,2,2,2,2,107,2,2,2,107,107,2,2,2,2,2,2,2},
|
||||
{106,40,24,38,61,118,106,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{149,111,58,79,127,13,41,33,27,16,30,2,61,2,72,2,2,2,2,2,2,2,2,2,2,2,2,75,75,2,2,2},
|
||||
{105,92,43,156,25,53,57,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{99,40,62,67,66,29,99,99,99,78,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79},
|
||||
{109,42,96,95,66,41,103,84,13,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{111,72,16,89,25,86,117,29,14,14,2,2,2,2,2,60,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{106,72,49,94,140,44,97,157,75,2,2,4,123,123,2,2,123,123,123,123,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{115,67,74,32,43,50,21,36,135,36,85,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{151,71,157,42,41,37,80,27,18,2,2,2,2,2,2,2,2,2,2,2,2,2,115,128,128,128,128,128,32,2,128,80},
|
||||
{119,91,38,30,92,44,32,76,22,2,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,129,2,2,129,2,2,2},
|
||||
{121,126,31,52,120,37,57,10,171,2,2,2,2,35,35,35,2,2,97,97,97,97,97,97,97,35,35,35,97,97,97,2},
|
||||
{155,86,49,104,87,94,64,45,61,91,91,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{164,121,44,166,47,33,7,15,13,2,2,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{128,120,133,17,71,52,25,107,42,21,21,2,2,2,2,4,4,96,2,9,9,2,9,94,94,94,94,94,94,94,94,96},
|
||||
{179,82,157,76,61,35,13,90,197,2,69,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39},
|
||||
{136,136,148,63,66,10,169,95,95,163,30,28,28,2,41,130,2,2,2,21,2,2,2,2,2,2,2,2,2,2,2,36},
|
||||
{131,40,112,63,55,30,53,79,79,79,2,79,2,2,2,2,2,79,2,2,2,2,14,36,2,21,21,21,21,2,2,91},
|
||||
{165,81,92,48,9,110,12,40,40,34,2,2,2,107,107,107,2,107,2,2,2,2,2,2,2,2,2,2,2,15,41,41},
|
||||
{169,66,170,97,35,56,55,86,32,32,2,2,2,2,14,2,40,2,37,2,2,37,40,40,40,2,2,2,37,37,37,37},
|
||||
{135,63,126,156,70,18,49,143,6,117,2,109,109,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{179,104,117,56,132,56,190,130,130,15,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{193,59,51,68,68,15,170,170,170,143,143,12,2,2,2,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{145,101,56,65,23,76,110,2,4,4,4,146,146,146,2,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,146,146},
|
||||
{144,129,26,98,36,46,47,52,52,52,82,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,91,2,2},
|
||||
{145,78,166,171,56,20,63,2,2,33,33,33,33,2,78,47,47,47,47,47,2,2,2,2,2,78,78,78,2,2,2,2},
|
||||
{191,69,176,54,47,75,167,2,2,2,188,188,188,30,30,2,67,67,117,2,117,117,117,2,2,36,2,2,2,2,2,2},
|
||||
{186,96,29,122,47,96,170,157,157,157,157,108,159,2,195,195,26,26,26,26,26,2,2,2,2,132,132,132,2,2,2,2},
|
||||
{151,118,226,91,54,49,33,2,2,2,2,4,4,4,143,143,2,2,143,25,25,25,2,143,143,143,143,143,143,143,143,143},
|
||||
{144,91,237,82,81,75,138,163,163,163,117,117,44,2,44,136,136,136,136,2,2,2,2,2,122,122,122,122,2,2,2,136},
|
||||
{189,78,178,64,118,27,189,2,2,67,67,110,110,110,110,2,28,28,2,2,2,2,2,2,2,102,2,2,2,2,2,2},
|
||||
{165,202,83,76,125,65,42,2,44,44,23,2,23,23,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{209,204,92,75,85,146,104,2,7,18,8,2,2,2,204,95,95,95,2,2,2,95,95,95,95,95,95,95,2,2,2,95},
|
||||
{169,68,89,16,193,82,33,262,262,175,148,148,148,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{171,162,78,43,61,17,112,10,171,182,118,33,2,2,2,2,118,2,2,2,2,2,2,151,2,2,2,2,2,2,2,2},
|
||||
{211,121,119,55,90,211,96,89,225,25,178,36,36,36,2,2,108,2,2,2,2,2,2,2,2,2,2,2,2,184,2,2},
|
||||
{154,101,83,17,16,210,41,79,70,158,2,27,27,2,2,2,2,2,2,2,2,2,2,2,2,153,2,2,2,2,2,2},
|
||||
{169,179,130,79,148,180,136,17,47,119,2,119,119,169,169,2,169,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{241,171,148,31,172,34,66,60,156,140,2,2,2,75,75,2,2,2,2,2,2,2,190,190,2,2,2,30,2,2,2,2},
|
||||
{229,189,183,106,118,138,82,149,265,39,2,2,265,2,2,2,2,2,2,130,2,2,2,71,71,2,2,2,71,2,2,71},
|
||||
{165,157,127,21,64,15,80,130,130,130,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,74,2},
|
||||
{221,130,203,84,83,83,29,121,54,54,2,141,2,2,94,94,94,4,4,4,2,4,2,2,2,54,54,108,16,16,94,52},
|
||||
{230,166,20,160,121,102,153,94,16,67,2,2,2,2,2,2,97,97,97,2,2,97,97,2,97,97,97,97,97,97,97,97},
|
||||
{181,79,137,119,139,24,77,17,50,25,25,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{239,242,192,40,41,62,124,193,193,31,193,2,2,2,2,2,2,2,2,2,2,2,2,148,2,2,2,2,2,2,2,2},
|
||||
{239,178,73,122,239,51,95,48,78,88,78,2,2,2,2,2,2,2,2,2,2,2,144,144,2,2,144,144,144,2,144,144},
|
||||
{234,117,198,34,143,21,74,6,252,252,98,2,2,2,2,197,38,2,2,2,2,2,47,2,47,47,47,47,2,2,2,47},
|
||||
{179,110,38,28,58,39,16,29,42,125,202,8,8,129,4,4,2,2,2,67,67,2,2,2,2,2,2,8,67,67,2,2},
|
||||
{246,53,189,50,18,59,179,179,7,137,137,2,2,103,103,103,103,40,40,40,2,2,2,2,73,73,73,2,103,103,103,103},
|
||||
{239,133,87,92,193,12,206,238,238,238,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{191,244,60,193,18,32,193,104,74,125,125,66,2,2,2,2,2,2,2,2,2,2,125,125,2,125,125,125,2,2,2,2},
|
||||
{177,74,90,91,172,219,63,84,32,2,2,196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{253,143,54,39,122,32,75,107,234,2,6,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{282,89,71,88,30,23,81,105,105,2,2,105,105,131,107,2,2,2,2,2,195,195,2,2,29,29,21,21,128,195,195,195},
|
||||
{259,115,171,40,156,71,67,24,24,2,2,2,24,4,4,4,2,234,2,2,2,2,2,2,2,2,2,74,74,2,2,2},
|
||||
{264,237,49,203,247,108,75,75,75,2,2,32,16,8,16,16,16,164,14,164,2,2,32,16,8,16,16,32,42,42,42,2},
|
||||
{264,106,89,51,29,226,23,286,286,151,151,151,151,151,2,2,2,2,2,2,31,31,31,2,2,2,2,2,2,2,2,284},
|
||||
{194,215,82,23,213,23,108,127,74,2,201,32,178,2,285,2,2,2,2,285,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{196,267,251,111,231,14,30,52,95,2,154,53,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{266,67,22,101,102,157,53,95,130,2,42,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{281,205,107,178,236,122,122,316,76,215,215,2,60,2,2,2,2,2,2,227,2,2,2,2,2,2,2,2,27,2,2,2},
|
||||
{271,89,65,195,132,162,102,45,56,174,104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{200,169,170,121,155,68,131,167,78,113,113,2,2,64,2,2,2,2,2,2,2,2,2,2,2,2,2,173,2,2,2,2},
|
||||
{288,143,265,264,71,19,231,169,27,27,27,2,2,2,2,2,2,2,2,2,2,2,2,2,51,2,2,2,2,2,2,2},
|
||||
{311,141,96,173,90,119,134,151,35,252,39,2,39,39,2,2,2,2,2,2,2,2,2,113,113,2,2,2,2,2,2,113},
|
||||
{311,230,52,138,225,346,162,216,216,91,160,182,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{275,167,128,244,184,184,44,210,237,139,139,139,139,2,2,2,2,2,2,2,2,2,2,73,2,2,2,2,2,2,2,2},
|
||||
{176,156,83,135,46,197,108,63,33,33,33,2,133,2,213,213,213,213,133,133,2,133,2,2,133,133,2,2,2,2,2,2},
|
||||
{283,125,141,192,89,181,106,208,124,124,2,112,112,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{289,191,171,152,191,173,54,13,21,56,56,56,2,2,2,2,2,2,2,2,2,220,2,2,2,2,2,2,2,2,2,2},
|
||||
{334,305,132,132,99,126,54,116,164,105,2,105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,287,2,2,2,2},
|
||||
{240,166,44,193,153,333,15,99,246,99,2,2,99,99,2,2,2,2,195,195,195,2,195,195,2,263,263,2,195,195,195,263},
|
||||
{246,194,265,79,225,65,24,62,46,181,2,2,2,314,2,2,2,2,2,2,2,215,2,2,2,2,2,2,2,2,2,2},
|
||||
{229,334,285,302,21,26,24,97,64,40,2,2,2,231,231,231,231,65,2,148,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{251,295,55,249,135,173,164,78,261,261,2,2,2,2,114,2,2,2,2,2,256,142,142,2,2,2,2,2,2,2,2,185},
|
||||
{232,153,55,60,181,79,107,70,29,35,2,2,58,58,2,58,2,2,2,2,61,61,2,61,61,2,2,61,61,90,2,90},
|
||||
{246,116,45,146,109,90,32,103,133,119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{246,113,146,232,162,262,204,47,45,331,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{360,150,84,275,13,26,368,49,244,244,63,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{239,295,174,87,30,87,85,36,103,36,2,278,2,2,2,2,2,2,163,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{356,300,75,310,123,301,200,107,183,37,218,37,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{358,207,168,150,150,21,156,50,195,275,275,275,2,2,2,2,2,251,2,2,2,251,251,251,251,251,251,251,251,251,2,2},
|
||||
{322,194,234,62,236,147,239,400,255,255,80,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{326,276,134,100,143,113,115,221,13,339,194,194,194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{337,132,27,45,14,81,110,84,238,224,211,2,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{192,213,113,174,403,117,342,342,311,35,35,2,2,2,2,2,2,2,2,101,2,2,2,2,2,2,2,2,2,101,101,101},
|
||||
{264,273,316,53,40,330,51,285,115,219,147,2,2,2,335,2,2,2,2,2,173,2,173,2,2,173,173,173,173,173,173,83},
|
||||
{254,293,407,118,54,296,160,231,4,4,93,2,2,2,2,2,60,61,2,2,120,127,127,127,88,88,88,88,88,88,88,88},
|
||||
{341,78,336,263,281,164,99,334,296,114,109,2,163,163,163,163,2,2,2,2,2,2,2,125,125,292,292,292,292,125,125,125},
|
||||
{355,87,212,100,89,210,133,344,120,45,45,138,138,138,138,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{274,141,46,219,158,284,38,79,73,185,35,6,81,2,2,2,2,53,2,2,81,81,2,81,2,2,2,53,53,53,53,53},
|
||||
{349,303,439,19,95,240,174,191,2,162,162,2,2,2,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{360,91,201,205,67,181,59,77,2,44,103,103,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,125},
|
||||
{283,154,261,91,77,147,227,105,116,311,256,256,2,116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,32,2},
|
||||
{287,288,111,89,249,370,55,16,248,67,67,115,2,2,134,134,2,2,2,2,2,2,2,2,2,2,2,2,2,22,22,22},
|
||||
{284,270,282,37,29,181,160,49,285,285,374,250,2,374,374,2,2,2,179,179,35,2,179,179,2,179,179,2,2,285,285,285},
|
||||
{359,305,52,36,243,231,7,92,2,68,68,307,62,45,2,2,112,311,311,311,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{288,119,218,137,364,38,27,380,2,2,211,23,33,2,2,2,2,2,225,225,225,2,2,225,225,225,2,2,2,2,2,2},
|
||||
{277,155,232,309,370,365,348,75,214,214,214,4,4,2,2,2,210,210,210,210,210,210,210,2,2,2,2,2,2,2,2,2},
|
||||
{292,204,91,41,124,190,107,322,125,125,125,125,125,25,25,62,2,2,146,146,2,2,62,146,2,146,114,146,114,2,2,2},
|
||||
{282,195,192,409,68,99,253,106,2,2,2,231,55,55,2,323,323,55,55,285,285,285,285,2,2,2,2,2,2,285,285,323},
|
||||
{299,122,174,403,113,77,63,275,2,2,2,138,276,227,38,227,2,237,2,2,2,2,2,2,2,2,2,2,352,352,352,2},
|
||||
{282,222,268,86,21,109,353,408,2,2,2,2,135,12,12,216,241,241,241,241,241,241,241,241,241,303,303,303,135,135,135,2},
|
||||
{374,94,89,257,137,246,186,196,2,2,2,2,2,454,122,122,122,122,2,2,2,28,28,94,94,94,94,94,122,122,122,122},
|
||||
{288,92,62,428,122,153,481,66,2,2,2,250,250,177,177,177,177,279,279,279,279,279,279,279,2,2,279,177,177,177,177,177},
|
||||
{288,370,141,284,207,192,450,67,2,2,2,183,217,217,217,183,183,167,202,202,202,202,167,167,2,2,2,164,164,80,167,167},
|
||||
{286,293,199,39,158,332,242,103,2,2,2,408,266,315,2,2,365,253,315,315,315,315,315,2,2,315,2,2,2,2,2,2},
|
||||
{407,83,435,187,40,16,52,65,2,2,244,39,77,119,119,2,2,2,119,342,342,2,2,2,2,2,342,2,2,58,58,119},
|
||||
{398,88,78,57,260,203,203,43,131,131,131,204,204,322,204,2,102,2,325,325,325,325,2,2,2,2,2,2,2,2,2,2},
|
||||
{390,174,70,155,163,67,225,49,2,34,34,151,151,2,2,111,2,2,111,111,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{393,129,393,169,23,192,168,47,2,2,312,150,71,2,150,2,2,2,61,2,2,61,2,2,2,2,2,2,2,2,2,2},
|
||||
{408,136,71,63,63,159,222,68,181,181,124,227,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{294,169,79,242,160,123,178,290,186,186,56,399,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{415,228,69,68,193,122,21,362,33,22,362,57,2,2,2,2,46,46,196,196,196,2,196,196,196,2,196,2,2,2,2,2},
|
||||
{415,130,241,185,312,175,309,199,94,281,47,47,2,2,2,2,206,307,221,2,2,2,2,2,239,239,239,239,239,206,206,206},
|
||||
{417,238,147,165,346,19,92,164,266,291,291,43,2,2,2,345,2,2,2,345,345,2,2,2,2,2,345,2,2,2,2,2},
|
||||
{456,192,86,182,35,174,342,102,210,210,210,393,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,256,256,158},
|
||||
{307,255,92,38,325,61,103,246,176,319,80,89,2,241,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{432,168,63,154,166,46,479,145,144,288,288,288,288,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{341,256,113,85,188,233,161,29,110,167,91,91,253,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{311,360,312,158,73,16,106,209,472,48,24,203,203,2,2,2,2,234,234,234,2,234,234,203,2,2,2,234,234,234,234,234},
|
||||
{437,196,161,100,132,246,395,187,35,35,35,2,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{438,174,338,145,155,276,422,374,4,463,463,99,224,70,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{426,225,211,130,325,283,353,96,282,23,299,2,2,2,63,63,2,276,276,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{430,101,288,38,200,332,325,193,123,123,88,2,2,2,2,2,231,231,139,139,139,139,139,139,139,139,139,139,139,139,139,139},
|
||||
{434,143,308,389,365,363,174,63,121,125,260,2,2,260,260,2,2,2,2,2,2,2,2,2,2,258,2,2,2,258,2,2},
|
||||
{453,123,201,141,229,223,234,494,102,102,102,2,2,102,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,252},
|
||||
{438,168,65,264,304,74,168,88,114,132,187,2,127,127,2,2,2,2,2,81,81,56,2,2,2,307,2,2,2,2,81,81},
|
||||
{324,181,141,129,33,171,173,291,227,373,52,301,301,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{448,119,431,111,135,50,242,95,148,49,49,49,68,2,2,2,2,2,2,2,2,49,2,2,2,2,2,2,2,2,2,2},
|
||||
{335,114,55,47,33,173,287,345,198,198,136,238,238,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{468,377,243,237,332,512,27,167,22,169,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{456,162,188,223,408,209,28,164,299,299,258,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{445,391,115,226,96,456,239,214,556,158,158,282,2,2,2,2,2,2,2,2,2,2,2,2,2,331,2,2,2,2,2,2},
|
||||
{360,397,130,172,407,479,295,13,38,199,199,346,2,2,2,2,2,2,145,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{512,136,129,361,180,61,274,128,422,27,292,165,2,2,2,2,2,2,363,117,117,117,117,2,2,2,2,363,2,2,2,2},
|
||||
{478,433,483,302,200,227,273,27,171,171,371,102,2,2,2,2,2,20,2,2,2,2,2,2,2,2,403,403,2,2,2,2},
|
||||
{485,158,454,86,212,60,93,40,209,188,188,106,2,231,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{390,448,111,145,47,555,367,317,315,52,429,435,429,429,2,2,2,2,2,2,2,2,229,2,2,229,2,2,2,229,2,2},
|
||||
{490,331,187,398,407,373,497,219,423,423,378,378,2,419,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{474,373,248,330,40,113,105,273,103,407,2,165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{495,406,306,239,172,323,236,50,37,435,2,310,56,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{397,393,191,269,462,151,264,134,307,307,2,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,159,2,2,2,2,2},
|
||||
{485,491,325,149,122,145,228,100,311,64,2,62,137,2,137,2,2,2,2,2,2,2,392,2,2,2,2,2,2,2,2,2},
|
||||
{364,462,360,383,182,187,123,69,129,146,2,156,149,2,149,2,2,2,2,2,2,2,303,303,303,2,2,2,2,2,149,266},
|
||||
{507,195,130,401,363,171,483,20,86,464,2,89,89,2,26,2,2,2,2,2,425,425,2,2,2,2,2,2,2,2,2,2},
|
||||
{380,220,87,122,242,78,207,371,95,305,2,2,2,2,440,440,445,358,358,331,331,358,445,445,445,445,445,445,445,445,445,445},
|
||||
{507,221,247,137,182,90,28,207,325,438,2,2,2,2,2,187,232,438,2,2,68,37,37,37,37,37,37,37,37,37,161,2},
|
||||
{509,265,101,126,203,86,152,416,352,85,2,2,2,284,391,368,2,2,152,2,2,2,325,2,2,2,2,2,2,2,2,2},
|
||||
{572,359,332,480,68,535,59,504,365,21,2,2,246,54,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{415,178,178,372,415,400,73,82,348,99,2,23,325,44,2,2,2,2,2,2,2,2,325,2,2,2,2,2,2,2,2,2},
|
||||
{430,275,236,361,42,552,368,236,653,74,65,458,288,307,307,2,2,2,2,2,2,2,65,65,2,2,2,2,2,2,2,2},
|
||||
{434,139,58,437,130,441,188,15,63,145,145,145,300,2,2,2,2,300,2,2,2,2,2,2,2,2,401,401,401,401,401,401},
|
||||
{542,138,266,514,552,202,103,197,574,48,2,96,96,2,2,96,96,217,2,2,2,2,2,2,2,2,2,2,2,2,2,217},
|
||||
{546,494,72,272,550,219,213,209,169,404,69,464,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{602,466,332,458,99,244,255,183,446,670,2,186,323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,292,165,165,165,165},
|
||||
{422,413,561,110,242,62,436,478,18,150,606,88,643,2,249,2,2,2,2,456,2,2,2,2,2,2,2,2,2,2,2,456},
|
||||
{522,141,154,253,264,53,120,93,274,52,44,203,556,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{600,249,375,555,421,322,317,84,517,517,268,106,353,2,2,2,2,2,2,2,2,2,268,2,2,2,2,2,2,302,2,2},
|
||||
{555,516,310,438,290,559,52,265,248,193,285,441,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{555,300,232,386,470,300,355,177,57,407,450,279,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{544,177,79,306,256,402,205,496,398,115,115,43,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{534,274,194,220,575,81,206,544,341,85,137,429,429,429,429,344,2,2,2,2,2,315,315,315,315,315,315,72,72,72,2,2},
|
||||
{548,538,508,250,539,102,73,285,119,433,480,480,2,2,2,480,480,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{622,526,294,56,498,176,237,351,25,26,474,55,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{446,163,469,481,240,278,51,373,491,13,22,419,2,2,2,2,2,2,2,2,2,176,176,2,2,2,2,2,2,2,2,2},
|
||||
{445,223,102,108,120,166,68,214,737,504,96,96,206,377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39,528},
|
||||
{453,121,489,84,434,505,78,575,468,372,468,468,83,468,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{425,355,128,58,194,82,438,117,10,34,34,35,112,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{432,479,328,443,253,634,271,429,406,543,406,543,543,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{456,383,487,311,57,579,673,264,582,187,184,43,43,2,2,2,2,501,501,501,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{437,561,384,619,363,420,614,117,217,247,405,142,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{437,133,516,423,305,90,135,25,266,487,6,286,286,2,2,2,2,2,2,2,2,2,2,2,2,510,510,2,2,2,2,2},
|
||||
{463,341,170,401,178,79,305,98,162,166,32,392,335,335,335,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{610,477,478,516,318,184,267,423,190,494,494,2,336,336,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{590,463,461,162,162,622,167,254,29,377,377,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{629,225,67,623,298,588,354,49,41,185,176,63,63,63,2,2,2,2,2,2,2,2,2,2,2,2,8,435,32,32,435,435},
|
||||
{448,126,129,168,209,340,40,96,509,509,509,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{635,212,284,356,187,591,275,361,194,317,488,2,2,2,2,2,2,97,6,2,6,247,2,2,2,2,2,2,2,2,2,6},
|
||||
{612,395,104,86,264,321,521,325,252,53,178,100,100,100,16,343,343,343,343,343,2,2,2,2,2,2,2,2,2,343,343,343},
|
||||
{486,428,287,472,292,141,504,178,585,98,282,2,2,2,2,2,2,2,2,2,2,2,2,284,284,284,78,284,2,2,2,2},
|
||||
{612,327,212,565,450,385,201,649,423,491,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{462,579,236,447,60,162,427,258,73,742,742,2,742,742,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{495,440,89,439,65,207,459,407,139,131,624,2,380,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{469,507,276,227,66,237,260,386,27,666,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{646,393,273,238,24,13,253,127,368,316,316,316,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{626,196,111,465,386,431,181,414,614,391,349,318,389,2,389,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{653,169,261,533,488,282,213,443,337,480,503,174,534,2,2,2,2,2,534,2,2,2,2,534,2,2,2,2,534,2,2,2},
|
||||
{670,555,160,90,604,604,50,459,376,545,316,180,526,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{642,160,702,90,157,254,278,521,650,277,74,554,122,2,2,2,2,2,2,517,174,174,174,2,2,2,2,2,2,2,2,2},
|
||||
{678,254,190,197,637,49,130,25,374,357,357,411,643,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,537,2,2},
|
||||
{512,347,65,546,434,87,18,123,672,412,316,6,699,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{657,233,108,38,147,53,136,168,408,477,477,279,268,289,2,2,2,2,2,2,289,2,2,2,2,2,2,2,2,289,289,2},
|
||||
{660,624,376,472,165,66,158,308,492,779,305,305,2,576,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{408,348,216,299,302,668,347,63,172,141,272,168,678,2,2,2,512,2,2,2,2,4,2,2,2,494,64,64,64,128,16,512},
|
||||
{669,421,230,70,212,845,237,347,148,76,823,472,2,2,2,132,2,2,2,2,2,2,2,383,132,383,2,2,383,383,383,383},
|
||||
{693,530,139,82,780,416,270,278,330,484,484,200,2,2,2,2,137,94,2,2,2,2,2,2,2,2,484,2,2,2,2,2},
|
||||
{672,150,164,622,196,75,302,119,42,314,314,132,60,60,60,298,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{705,302,411,705,691,160,809,40,32,867,826,826,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{684,229,138,46,407,399,82,254,267,31,31,45,2,209,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{707,323,409,27,31,157,492,463,886,412,251,251,304,190,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{555,543,434,78,850,174,277,194,4,100,471,69,69,424,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{793,279,264,566,252,495,872,492,482,107,294,503,350,350,2,2,2,2,2,2,2,285,285,273,273,273,273,2,2,2,2,2},
|
||||
{703,427,225,320,136,47,103,547,239,217,73,68,68,204,204,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{703,312,472,588,228,512,386,668,477,617,389,389,389,2,296,2,2,2,2,343,343,2,2,343,343,2,2,617,617,617,617,2},
|
||||
{709,509,697,145,252,194,304,192,192,623,623,4,423,2,2,2,199,423,2,2,2,222,222,2,2,623,623,623,623,623,2,222},
|
||||
{587,453,117,107,672,86,248,568,568,294,294,513,78,2,2,164,82,2,2,2,2,22,2,2,2,2,2,2,2,2,2,2},
|
||||
{741,466,378,135,737,131,159,469,59,2,59,59,187,2,204,2,2,2,2,2,2,2,2,2,798,2,2,798,798,798,798,798},
|
||||
{539,310,463,103,553,45,609,326,197,2,62,113,272,2,62,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{750,703,182,242,92,335,272,466,594,2,701,569,474,129,140,140,2,507,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{547,210,113,361,584,121,65,307,98,2,2,552,514,514,2,514,207,514,514,514,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{580,145,358,434,630,73,604,366,366,2,2,398,398,207,2,207,487,2,2,487,207,2,2,207,207,207,2,2,2,2,207,207},
|
||||
{765,421,129,298,867,365,222,476,401,142,90,22,22,88,226,657,2,2,477,2,2,2,2,2,226,226,2,226,2,2,2,226},
|
||||
{587,553,360,539,227,800,312,143,536,2,2,2,64,64,64,2,2,2,179,179,493,2,2,184,184,184,58,2,2,2,493,493},
|
||||
{841,222,158,469,253,91,347,241,766,2,2,2,88,88,88,439,439,439,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{462,653,478,67,269,150,474,711,220,669,669,669,669,669,390,352,325,2,229,545,545,545,545,545,545,545,545,2,545,352,309,352},
|
||||
{468,430,849,689,202,427,45,34,105,2,2,2,2,4,4,4,4,4,4,4,2,2,2,4,4,4,4,4,2,2,2,2},
|
||||
{792,169,306,843,246,123,293,229,483,2,2,2,165,163,163,163,163,440,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{563,325,717,766,440,705,290,123,228,2,2,2,32,64,146,2,2,2,116,79,79,2,146,146,79,79,79,2,2,146,146,79},
|
||||
{802,533,869,638,67,192,805,223,219,2,2,191,178,178,77,77,2,2,2,2,431,431,2,2,2,431,431,2,2,431,2,2},
|
||||
{781,638,410,399,336,465,856,426,28,2,4,4,6,6,2,2,2,449,372,372,449,449,449,2,2,449,449,449,449,449,449,2},
|
||||
{780,359,766,618,41,596,86,636,287,707,707,96,49,373,613,373,2,2,2,2,2,2,2,613,613,613,2,2,2,2,2,2},
|
||||
{622,309,913,550,994,90,257,588,29,526,526,526,496,496,576,2,2,2,2,2,182,182,182,2,2,447,447,447,447,447,447,182},
|
||||
{593,411,953,203,89,57,785,354,349,424,424,707,707,707,829,2,2,2,2,2,670,670,670,2,2,424,424,424,2,2,670,424},
|
||||
{629,560,621,245,683,633,495,551,472,2,31,74,489,684,555,684,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{901,490,693,410,666,119,703,593,201,61,70,70,774,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,418,418},
|
||||
{669,321,391,548,189,157,337,42,796,871,276,622,30,2,2,2,2,2,2,2,580,580,107,2,2,2,2,2,434,434,434,434},
|
||||
{610,236,633,300,681,358,72,281,148,466,466,283,275,2,386,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{859,584,475,745,506,900,40,869,143,612,175,275,209,12,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{822,581,76,382,72,347,964,324,137,61,61,28,623,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{867,820,301,252,61,331,105,309,562,218,365,326,768,672,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{859,844,510,859,118,190,550,29,159,622,622,382,258,382,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{843,730,235,233,816,495,598,134,131,604,227,378,378,553,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{670,595,333,257,907,413,548,341,327,350,612,700,700,700,700,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{877,181,375,79,199,256,223,295,135,371,395,354,2,307,944,2,813,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{708,442,186,698,345,103,687,463,163,416,416,107,2,2,2,375,375,416,6,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{865,675,786,568,112,197,225,348,372,497,215,215,2,2,2,2,159,159,150,224,224,141,2,2,2,2,141,141,141,141,141,141},
|
||||
{898,559,396,742,51,143,411,221,116,756,756,756,2,2,2,701,701,2,2,2,2,240,225,256,322,322,240,240,240,240,240,322},
|
||||
{982,579,548,413,416,103,71,101,1039,526,684,684,2,2,656,2,2,2,2,2,2,2,2,2,2,2,656,656,656,2,656,656},
|
||||
{642,757,247,513,372,54,546,971,271,61,61,1018,2,143,332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{865,827,614,74,725,685,724,190,178,272,835,722,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{718,359,103,558,684,560,67,35,120,342,680,265,265,265,2,2,265,2,2,2,2,2,2,2,2,2,430,2,2,2,2,2},
|
||||
{900,455,485,601,353,69,67,965,25,226,314,314,883,923,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{912,516,108,555,306,274,55,197,565,174,659,208,441,441,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{940,226,320,666,269,54,542,174,109,290,754,524,649,2,202,2,2,2,2,2,2,2,776,202,776,776,776,2,2,202,202,202},
|
||||
{672,652,792,253,796,404,171,90,406,433,43,159,72,2,2,372,2,540,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{733,439,537,37,149,650,916,443,743,621,921,664,664,2,2,2,2,2,682,523,523,523,2,2,523,523,523,523,523,523,523,523},
|
||||
{982,344,812,567,243,52,246,369,439,205,600,739,730,2,2,2,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{936,409,217,57,574,395,481,245,548,268,447,598,375,2,192,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{755,796,877,981,259,194,1180,215,90,658,662,662,662,2,36,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{949,422,941,491,66,786,592,429,307,123,40,478,478,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1077,496,819,340,974,122,39,1209,819,18,461,648,648,394,2,2,2,2,2,2,61,2,2,2,2,2,394,2,2,2,2,394},
|
||||
{1083,356,367,357,559,213,606,477,71,103,790,103,299,299,2,2,2,2,2,2,406,406,2,2,2,2,2,2,2,2,2,2},
|
||||
{738,749,769,610,306,326,328,578,479,840,840,840,68,192,2,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1094,640,912,223,67,472,623,623,1244,65,1009,1209,1209,812,387,2,2,2,513,2,2,2,2,2,2,2,2,2,2,2,1209,234},
|
||||
{1028,730,807,119,209,146,230,498,164,309,309,2,2,2,693,912,430,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{802,298,672,424,104,623,152,159,476,760,66,2,2,2,215,215,490,490,490,2,2,2,2,2,490,490,490,490,490,490,490,490},
|
||||
{1004,719,1041,460,551,516,135,417,130,698,698,2,2,2,655,655,655,655,655,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{818,301,273,664,206,971,895,590,912,523,523,2,2,452,384,255,2,130,130,130,130,865,2,2,2,255,2,2,2,2,2,2},
|
||||
{1078,527,589,244,170,892,827,606,1165,773,189,2,2,240,22,2,2,2,2,2,2,759,621,621,621,621,621,621,621,621,621,621},
|
||||
{1157,395,446,280,1130,695,668,271,111,882,477,615,615,615,2,2,2,2,2,2,2,2,615,615,615,615,615,615,615,2,305,2},
|
||||
{1050,749,809,479,87,757,288,172,597,722,4,418,418,390,2,2,2,2,2,390,390,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1057,385,263,395,901,274,727,340,1117,263,813,870,858,429,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1120,665,311,695,319,1033,511,297,602,1030,1030,714,240,240,2,2,2,2,2,2,2,2,2,2,2,2,2,953,2,2,2,2},
|
||||
{1120,1159,358,347,838,207,357,167,476,52,672,38,822,2,2,2,2,2,2,213,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{820,461,681,382,273,273,358,274,274,91,887,676,386,2,676,676,2,2,2,2,2,2,2,200,2,2,2,2,200,2,2,2},
|
||||
{1148,585,868,1282,666,417,733,1231,515,332,1213,337,337,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{898,782,478,1208,196,983,608,537,196,1141,141,296,715,715,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1142,370,287,925,307,1232,129,11,1284,1056,33,33,536,521,2,1286,2,2,2,2,2,2,2,2,2,2,2,2,847,847,847,847},
|
||||
{1192,555,586,516,1288,733,64,653,364,273,421,215,75,75,2,2,2,2,2,2,953,953,953,953,8,383,383,2,161,383,953,953},
|
||||
{966,590,140,297,189,844,633,12,847,742,742,244,281,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1247,353,973,217,1044,1318,1115,319,203,390,1244,225,2,2,508,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1015,593,112,1408,51,104,199,221,931,1010,928,928,2,2,878,878,2,2,2,2,731,731,2,731,731,2,731,2,731,731,731,2}
|
||||
};
|
571
src/external/libCuba/src/divonne/KorobovCoeff.c-5879
vendored
Normal file
571
src/external/libCuba/src/divonne/KorobovCoeff.c-5879
vendored
Normal file
@ -0,0 +1,571 @@
|
||||
#define KOROBOV_MINDIM 2
|
||||
#define KOROBOV_MAXDIM 33
|
||||
#define MAXPRIME 5879
|
||||
|
||||
#define Hash(x) ((12013 - x)*(-47 + x))/68400
|
||||
|
||||
static int prime[] = {
|
||||
FIRST,47,53,59,67,71,73,83,89,97,101,103,109,113,127,131,137,139,149,
|
||||
151,157,163,167,173,179,181,191,197,199,211,223,227,229,233,239,241,251,
|
||||
257,263,269,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,
|
||||
373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,
|
||||
479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,
|
||||
601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,
|
||||
719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,
|
||||
839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,
|
||||
971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,
|
||||
1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,
|
||||
1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,
|
||||
1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,
|
||||
1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,
|
||||
1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,
|
||||
1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,
|
||||
1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,
|
||||
1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,
|
||||
1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,
|
||||
2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,
|
||||
2113,2129,2131,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,
|
||||
2243,2251,2267,2269,2273,2281,2293,2297,2309,2311,2333,2339,2347,2357,
|
||||
2371,2377,2383,2393,2399,2411,2423,2437,2441,2447,2459,2467,2477,2503,
|
||||
2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,
|
||||
2647,2657,2659,2671,2677,2687,2699,2707,2719,2729,2741,2749,2753,2767,
|
||||
2777,2791,2803,2819,2833,2837,2843,2857,2861,2879,2887,2897,2909,2917,
|
||||
2927,2939,2953,2963,2971,2999,3001,3011,3023,3037,3041,3061,3067,3079,
|
||||
3089,3109,3119,3121,3137,3163,3167,3169,3187,3191,3209,3221,3229,3251,
|
||||
3259,3271,3299,3301,3307,3319,3331,3347,3359,3371,3389,3391,3413,3433,
|
||||
3449,3457,3463,3469,3491,3499,3517,3529,3547,3559,3571,3583,3593,3613,
|
||||
3631,3643,3659,3671,3691,3701,3719,3733,3739,3761,3779,3793,3803,3821,
|
||||
3833,3853,3863,3881,3907,3917,3931,3947,3967,3989,4001,4013,4027,4049,
|
||||
4073,4079,4099,4127,4139,4157,4177,4201,4211,4231,4253,4271,4289,4297,
|
||||
4327,4349,4373,4391,4409,4423,4451,4481,4493,4519,4547,4567,4591,4621,
|
||||
4637,4663,4691,4721,4733,4759,4793,4817,4861,4877,4909,4943,4973,5003,
|
||||
5039,5077,5113,5147,5189,5231,5273,5323,5381,5431,5483,5557,5623,5737,
|
||||
MarkLast(5879)
|
||||
};
|
||||
|
||||
static short coeff[][32] = {
|
||||
{13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2},
|
||||
{23,17,12,11,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14},
|
||||
{18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5},
|
||||
{18,13,23,5,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2},
|
||||
{21,22,7,21,2,20,20,2,2,2,2,22,2,2,2,2,2,2,2,6,6,21,2,2,2,2,2,2,2,2,6,6},
|
||||
{27,14,10,14,2,4,13,2,2,16,4,4,4,6,6,6,6,6,6,25,25,31,31,15,31,2,2,31,15,14,14,6},
|
||||
{30,19,24,16,22,8,2,2,22,5,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{34,28,13,28,27,27,2,4,2,2,2,16,16,4,20,20,36,20,36,5,5,5,36,36,5,5,5,7,5,7,7,2},
|
||||
{35,19,33,8,21,30,8,2,4,2,4,4,2,2,2,2,2,2,2,2,2,17,2,2,11,25,11,17,17,17,17,17},
|
||||
{39,40,15,21,11,26,13,2,2,13,2,2,2,2,2,2,2,2,2,2,26,26,2,2,2,2,2,2,2,2,2,2},
|
||||
{37,21,35,29,27,19,19,2,2,2,5,15,2,2,15,15,19,19,19,19,19,2,2,2,2,2,19,2,2,2,2,2},
|
||||
{45,44,13,25,17,47,30,2,30,2,2,2,2,2,2,2,2,2,19,19,19,17,17,2,2,2,2,2,2,2,2,2},
|
||||
{35,22,37,9,35,12,35,8,2,2,50,50,2,2,32,32,32,31,13,8,8,8,2,22,50,9,9,9,22,22,22,10},
|
||||
{29,24,43,36,49,2,2,8,4,25,49,25,2,2,8,10,10,10,5,5,5,40,10,33,40,40,2,27,10,25,25,25},
|
||||
{50,18,32,39,21,2,2,2,4,4,36,36,14,14,14,14,2,2,2,17,17,17,16,16,2,14,14,14,14,2,2,2},
|
||||
{31,28,45,20,18,43,43,13,28,2,2,2,31,31,31,31,31,2,2,2,43,43,2,2,2,2,2,2,2,2,30,2},
|
||||
{39,15,41,7,24,2,2,30,40,2,2,25,25,25,25,2,2,2,2,2,2,6,6,2,25,2,5,2,2,25,2,2},
|
||||
{44,20,29,39,7,21,21,21,2,2,45,2,2,2,49,49,49,49,49,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{56,20,22,13,18,35,35,6,2,4,2,4,2,2,2,23,16,16,4,23,2,34,52,2,34,2,4,2,2,2,23,16},
|
||||
{46,32,17,18,29,27,31,31,31,2,2,4,15,2,2,2,2,2,2,2,2,2,2,2,2,2,23,32,32,32,15,15},
|
||||
{62,42,43,17,23,13,13,2,2,13,2,2,2,2,2,2,2,10,2,2,2,2,9,10,2,2,2,19,9,9,9,9},
|
||||
{46,49,49,52,27,7,20,2,2,6,6,13,13,13,2,13,13,2,2,2,2,2,2,34,34,2,2,2,2,2,2,2},
|
||||
{64,34,16,28,16,51,47,2,2,2,6,18,39,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,2},
|
||||
{74,26,44,25,50,24,54,39,58,42,2,42,42,2,2,2,2,2,2,2,2,33,33,2,2,39,11,2,2,58,39,58},
|
||||
{70,22,50,22,16,9,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{74,21,17,25,35,33,10,2,10,20,20,57,57,57,2,2,57,2,2,2,2,2,2,2,13,2,2,2,2,2,2,2},
|
||||
{71,68,68,27,71,39,81,44,2,2,2,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{55,30,85,42,16,36,45,67,2,2,68,2,2,2,2,2,2,2,68,10,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{64,17,24,26,49,12,10,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,59,2,2},
|
||||
{68,57,23,38,61,38,13,13,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,68,15,2,44,44,44,2,2,2},
|
||||
{94,28,58,29,13,5,15,8,66,2,2,2,39,39,15,66,2,2,6,6,2,2,66,66,66,66,2,2,2,2,2,66},
|
||||
{94,85,9,41,41,37,29,29,17,2,2,2,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,8},
|
||||
{89,32,75,77,77,13,2,30,30,2,2,2,2,2,2,2,2,2,2,67,67,2,2,2,2,2,2,2,2,8,19,32},
|
||||
{70,45,58,63,67,10,72,72,70,6,2,36,2,70,70,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{101,33,76,13,45,63,2,2,6,19,2,2,32,32,32,32,32,65,2,63,63,11,11,11,19,19,19,19,9,63,63,63},
|
||||
{70,89,44,37,19,45,2,2,2,8,10,8,54,54,80,80,80,80,80,2,116,2,116,2,2,80,40,51,100,100,8,2},
|
||||
{71,54,83,51,42,98,2,2,8,8,14,30,93,22,15,15,30,30,30,44,44,44,2,2,22,22,22,117,44,11,11,11},
|
||||
{109,37,51,113,17,10,2,2,17,17,55,2,55,55,55,55,55,55,2,2,2,57,48,48,55,55,2,2,55,2,2,55},
|
||||
{75,38,68,89,11,52,2,2,81,39,2,38,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2},
|
||||
{81,84,35,34,20,93,2,12,12,12,2,96,2,96,96,2,96,2,2,2,2,2,2,2,2,2,2,2,2,56,56,56},
|
||||
{109,72,60,96,67,32,85,84,27,91,91,2,10,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{104,32,56,46,77,11,35,35,24,56,19,2,2,2,78,2,2,75,2,2,2,2,78,2,2,2,2,2,2,2,2,2},
|
||||
{81,103,25,35,28,15,20,20,20,2,2,2,2,20,20,20,107,107,2,2,2,2,2,2,2,2,2,2,2,2,13,13},
|
||||
{119,75,42,29,74,23,54,36,39,2,2,4,4,19,19,2,2,2,2,2,2,2,2,54,2,2,2,2,2,2,2,54},
|
||||
{115,73,22,102,75,138,16,73,50,16,2,50,2,2,2,133,2,2,2,2,2,2,2,2,2,2,2,2,2,33,33,33},
|
||||
{119,48,66,51,14,22,20,20,2,2,2,2,2,60,2,2,2,2,2,2,2,2,60,2,2,2,2,2,2,60,2,65},
|
||||
{121,94,80,29,51,69,42,36,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2},
|
||||
{129,123,41,79,43,34,24,11,2,2,4,2,2,2,2,75,16,16,16,75,75,75,16,16,16,25,2,99,2,2,75,16},
|
||||
{128,33,35,68,22,8,62,94,2,2,2,62,62,2,98,2,2,4,98,2,2,32,81,32,32,32,98,98,98,98,98,98},
|
||||
{101,109,154,15,57,6,27,36,2,2,37,37,2,2,2,2,2,2,2,107,2,2,2,107,107,2,2,2,2,2,2,2},
|
||||
{106,40,24,38,61,118,106,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{149,111,58,79,127,13,41,33,27,16,30,2,61,2,72,2,2,2,2,2,2,2,2,2,2,2,2,75,75,2,2,2},
|
||||
{105,92,43,156,25,53,57,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{99,40,62,67,66,29,99,99,99,78,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79},
|
||||
{109,42,96,95,66,41,103,84,13,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{111,72,16,89,25,86,117,29,14,14,2,2,2,2,2,60,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{106,72,49,94,140,44,97,157,75,2,2,4,123,123,2,2,123,123,123,123,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{115,67,74,32,43,50,21,36,135,36,85,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{151,71,157,42,41,37,80,27,18,2,2,2,2,2,2,2,2,2,2,2,2,2,115,128,128,128,128,128,32,2,128,80},
|
||||
{119,91,38,30,92,44,32,76,22,2,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,129,2,2,129,2,2,2},
|
||||
{121,126,31,52,120,37,57,10,171,2,2,2,2,35,35,35,2,2,97,97,97,97,97,97,97,35,35,35,97,97,97,2},
|
||||
{155,86,49,104,87,94,64,45,61,91,91,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{164,121,44,166,47,33,7,15,13,2,2,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{128,120,133,17,71,52,25,107,42,21,21,2,2,2,2,4,4,96,2,9,9,2,9,94,94,94,94,94,94,94,94,96},
|
||||
{179,82,157,76,61,35,13,90,197,2,69,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39},
|
||||
{136,136,148,63,66,10,169,95,95,163,30,28,28,2,41,130,2,2,2,21,2,2,2,2,2,2,2,2,2,2,2,36},
|
||||
{131,40,112,63,55,30,53,79,79,79,2,79,2,2,2,2,2,79,2,2,2,2,14,36,2,21,21,21,21,2,2,91},
|
||||
{165,81,92,48,9,110,12,40,40,34,2,2,2,107,107,107,2,107,2,2,2,2,2,2,2,2,2,2,2,15,41,41},
|
||||
{169,66,170,97,35,56,55,86,32,32,2,2,2,2,14,2,40,2,37,2,2,37,40,40,40,2,2,2,37,37,37,37},
|
||||
{135,63,126,156,70,18,49,143,6,117,2,109,109,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{179,104,117,56,132,56,190,130,130,15,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{193,59,51,68,68,15,170,170,170,143,143,12,2,2,2,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{145,101,56,65,23,76,110,2,4,4,4,146,146,146,2,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,146,146},
|
||||
{144,129,26,98,36,46,47,52,52,52,82,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,91,2,2},
|
||||
{145,78,166,171,56,20,63,2,2,33,33,33,33,2,78,47,47,47,47,47,2,2,2,2,2,78,78,78,2,2,2,2},
|
||||
{191,69,176,54,47,75,167,2,2,2,188,188,188,30,30,2,67,67,117,2,117,117,117,2,2,36,2,2,2,2,2,2},
|
||||
{186,96,29,122,47,96,170,157,157,157,157,108,159,2,195,195,26,26,26,26,26,2,2,2,2,132,132,132,2,2,2,2},
|
||||
{151,118,226,91,54,49,33,2,2,2,2,4,4,4,143,143,2,2,143,25,25,25,2,143,143,143,143,143,143,143,143,143},
|
||||
{144,91,237,82,81,75,138,163,163,163,117,117,44,2,44,136,136,136,136,2,2,2,2,2,122,122,122,122,2,2,2,136},
|
||||
{189,78,178,64,118,27,189,2,2,67,67,110,110,110,110,2,28,28,2,2,2,2,2,2,2,102,2,2,2,2,2,2},
|
||||
{165,202,83,76,125,65,42,2,44,44,23,2,23,23,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{209,204,92,75,85,146,104,2,7,18,8,2,2,2,204,95,95,95,2,2,2,95,95,95,95,95,95,95,2,2,2,95},
|
||||
{169,68,89,16,193,82,33,262,262,175,148,148,148,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{171,162,78,43,61,17,112,10,171,182,118,33,2,2,2,2,118,2,2,2,2,2,2,151,2,2,2,2,2,2,2,2},
|
||||
{211,121,119,55,90,211,96,89,225,25,178,36,36,36,2,2,108,2,2,2,2,2,2,2,2,2,2,2,2,184,2,2},
|
||||
{154,101,83,17,16,210,41,79,70,158,2,27,27,2,2,2,2,2,2,2,2,2,2,2,2,153,2,2,2,2,2,2},
|
||||
{169,179,130,79,148,180,136,17,47,119,2,119,119,169,169,2,169,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{241,171,148,31,172,34,66,60,156,140,2,2,2,75,75,2,2,2,2,2,2,2,190,190,2,2,2,30,2,2,2,2},
|
||||
{229,189,183,106,118,138,82,149,265,39,2,2,265,2,2,2,2,2,2,130,2,2,2,71,71,2,2,2,71,2,2,71},
|
||||
{165,157,127,21,64,15,80,130,130,130,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,74,2},
|
||||
{221,130,203,84,83,83,29,121,54,54,2,141,2,2,94,94,94,4,4,4,2,4,2,2,2,54,54,108,16,16,94,52},
|
||||
{230,166,20,160,121,102,153,94,16,67,2,2,2,2,2,2,97,97,97,2,2,97,97,2,97,97,97,97,97,97,97,97},
|
||||
{181,79,137,119,139,24,77,17,50,25,25,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{239,242,192,40,41,62,124,193,193,31,193,2,2,2,2,2,2,2,2,2,2,2,2,148,2,2,2,2,2,2,2,2},
|
||||
{239,178,73,122,239,51,95,48,78,88,78,2,2,2,2,2,2,2,2,2,2,2,144,144,2,2,144,144,144,2,144,144},
|
||||
{234,117,198,34,143,21,74,6,252,252,98,2,2,2,2,197,38,2,2,2,2,2,47,2,47,47,47,47,2,2,2,47},
|
||||
{179,110,38,28,58,39,16,29,42,125,202,8,8,129,4,4,2,2,2,67,67,2,2,2,2,2,2,8,67,67,2,2},
|
||||
{246,53,189,50,18,59,179,179,7,137,137,2,2,103,103,103,103,40,40,40,2,2,2,2,73,73,73,2,103,103,103,103},
|
||||
{239,133,87,92,193,12,206,238,238,238,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{191,244,60,193,18,32,193,104,74,125,125,66,2,2,2,2,2,2,2,2,2,2,125,125,2,125,125,125,2,2,2,2},
|
||||
{177,74,90,91,172,219,63,84,32,2,2,196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{253,143,54,39,122,32,75,107,234,2,6,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{282,89,71,88,30,23,81,105,105,2,2,105,105,131,107,2,2,2,2,2,195,195,2,2,29,29,21,21,128,195,195,195},
|
||||
{259,115,171,40,156,71,67,24,24,2,2,2,24,4,4,4,2,234,2,2,2,2,2,2,2,2,2,74,74,2,2,2},
|
||||
{264,237,49,203,247,108,75,75,75,2,2,32,16,8,16,16,16,164,14,164,2,2,32,16,8,16,16,32,42,42,42,2},
|
||||
{264,106,89,51,29,226,23,286,286,151,151,151,151,151,2,2,2,2,2,2,31,31,31,2,2,2,2,2,2,2,2,284},
|
||||
{194,215,82,23,213,23,108,127,74,2,201,32,178,2,285,2,2,2,2,285,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{196,267,251,111,231,14,30,52,95,2,154,53,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{266,67,22,101,102,157,53,95,130,2,42,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{281,205,107,178,236,122,122,316,76,215,215,2,60,2,2,2,2,2,2,227,2,2,2,2,2,2,2,2,27,2,2,2},
|
||||
{271,89,65,195,132,162,102,45,56,174,104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{200,169,170,121,155,68,131,167,78,113,113,2,2,64,2,2,2,2,2,2,2,2,2,2,2,2,2,173,2,2,2,2},
|
||||
{288,143,265,264,71,19,231,169,27,27,27,2,2,2,2,2,2,2,2,2,2,2,2,2,51,2,2,2,2,2,2,2},
|
||||
{311,141,96,173,90,119,134,151,35,252,39,2,39,39,2,2,2,2,2,2,2,2,2,113,113,2,2,2,2,2,2,113},
|
||||
{311,230,52,138,225,346,162,216,216,91,160,182,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{275,167,128,244,184,184,44,210,237,139,139,139,139,2,2,2,2,2,2,2,2,2,2,73,2,2,2,2,2,2,2,2},
|
||||
{176,156,83,135,46,197,108,63,33,33,33,2,133,2,213,213,213,213,133,133,2,133,2,2,133,133,2,2,2,2,2,2},
|
||||
{283,125,141,192,89,181,106,208,124,124,2,112,112,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{289,191,171,152,191,173,54,13,21,56,56,56,2,2,2,2,2,2,2,2,2,220,2,2,2,2,2,2,2,2,2,2},
|
||||
{334,305,132,132,99,126,54,116,164,105,2,105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,287,2,2,2,2},
|
||||
{240,166,44,193,153,333,15,99,246,99,2,2,99,99,2,2,2,2,195,195,195,2,195,195,2,263,263,2,195,195,195,263},
|
||||
{246,194,265,79,225,65,24,62,46,181,2,2,2,314,2,2,2,2,2,2,2,215,2,2,2,2,2,2,2,2,2,2},
|
||||
{229,334,285,302,21,26,24,97,64,40,2,2,2,231,231,231,231,65,2,148,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{251,295,55,249,135,173,164,78,261,261,2,2,2,2,114,2,2,2,2,2,256,142,142,2,2,2,2,2,2,2,2,185},
|
||||
{232,153,55,60,181,79,107,70,29,35,2,2,58,58,2,58,2,2,2,2,61,61,2,61,61,2,2,61,61,90,2,90},
|
||||
{246,116,45,146,109,90,32,103,133,119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{246,113,146,232,162,262,204,47,45,331,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{360,150,84,275,13,26,368,49,244,244,63,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{239,295,174,87,30,87,85,36,103,36,2,278,2,2,2,2,2,2,163,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{356,300,75,310,123,301,200,107,183,37,218,37,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{358,207,168,150,150,21,156,50,195,275,275,275,2,2,2,2,2,251,2,2,2,251,251,251,251,251,251,251,251,251,2,2},
|
||||
{322,194,234,62,236,147,239,400,255,255,80,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{326,276,134,100,143,113,115,221,13,339,194,194,194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{337,132,27,45,14,81,110,84,238,224,211,2,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{192,213,113,174,403,117,342,342,311,35,35,2,2,2,2,2,2,2,2,101,2,2,2,2,2,2,2,2,2,101,101,101},
|
||||
{264,273,316,53,40,330,51,285,115,219,147,2,2,2,335,2,2,2,2,2,173,2,173,2,2,173,173,173,173,173,173,83},
|
||||
{254,293,407,118,54,296,160,231,4,4,93,2,2,2,2,2,60,61,2,2,120,127,127,127,88,88,88,88,88,88,88,88},
|
||||
{341,78,336,263,281,164,99,334,296,114,109,2,163,163,163,163,2,2,2,2,2,2,2,125,125,292,292,292,292,125,125,125},
|
||||
{355,87,212,100,89,210,133,344,120,45,45,138,138,138,138,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{274,141,46,219,158,284,38,79,73,185,35,6,81,2,2,2,2,53,2,2,81,81,2,81,2,2,2,53,53,53,53,53},
|
||||
{349,303,439,19,95,240,174,191,2,162,162,2,2,2,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{360,91,201,205,67,181,59,77,2,44,103,103,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,125},
|
||||
{283,154,261,91,77,147,227,105,116,311,256,256,2,116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,32,2},
|
||||
{287,288,111,89,249,370,55,16,248,67,67,115,2,2,134,134,2,2,2,2,2,2,2,2,2,2,2,2,2,22,22,22},
|
||||
{284,270,282,37,29,181,160,49,285,285,374,250,2,374,374,2,2,2,179,179,35,2,179,179,2,179,179,2,2,285,285,285},
|
||||
{359,305,52,36,243,231,7,92,2,68,68,307,62,45,2,2,112,311,311,311,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{288,119,218,137,364,38,27,380,2,2,211,23,33,2,2,2,2,2,225,225,225,2,2,225,225,225,2,2,2,2,2,2},
|
||||
{277,155,232,309,370,365,348,75,214,214,214,4,4,2,2,2,210,210,210,210,210,210,210,2,2,2,2,2,2,2,2,2},
|
||||
{292,204,91,41,124,190,107,322,125,125,125,125,125,25,25,62,2,2,146,146,2,2,62,146,2,146,114,146,114,2,2,2},
|
||||
{282,195,192,409,68,99,253,106,2,2,2,231,55,55,2,323,323,55,55,285,285,285,285,2,2,2,2,2,2,285,285,323},
|
||||
{299,122,174,403,113,77,63,275,2,2,2,138,276,227,38,227,2,237,2,2,2,2,2,2,2,2,2,2,352,352,352,2},
|
||||
{282,222,268,86,21,109,353,408,2,2,2,2,135,12,12,216,241,241,241,241,241,241,241,241,241,303,303,303,135,135,135,2},
|
||||
{374,94,89,257,137,246,186,196,2,2,2,2,2,454,122,122,122,122,2,2,2,28,28,94,94,94,94,94,122,122,122,122},
|
||||
{288,92,62,428,122,153,481,66,2,2,2,250,250,177,177,177,177,279,279,279,279,279,279,279,2,2,279,177,177,177,177,177},
|
||||
{288,370,141,284,207,192,450,67,2,2,2,183,217,217,217,183,183,167,202,202,202,202,167,167,2,2,2,164,164,80,167,167},
|
||||
{286,293,199,39,158,332,242,103,2,2,2,408,266,315,2,2,365,253,315,315,315,315,315,2,2,315,2,2,2,2,2,2},
|
||||
{407,83,435,187,40,16,52,65,2,2,244,39,77,119,119,2,2,2,119,342,342,2,2,2,2,2,342,2,2,58,58,119},
|
||||
{398,88,78,57,260,203,203,43,131,131,131,204,204,322,204,2,102,2,325,325,325,325,2,2,2,2,2,2,2,2,2,2},
|
||||
{390,174,70,155,163,67,225,49,2,34,34,151,151,2,2,111,2,2,111,111,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{393,129,393,169,23,192,168,47,2,2,312,150,71,2,150,2,2,2,61,2,2,61,2,2,2,2,2,2,2,2,2,2},
|
||||
{408,136,71,63,63,159,222,68,181,181,124,227,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{294,169,79,242,160,123,178,290,186,186,56,399,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{415,228,69,68,193,122,21,362,33,22,362,57,2,2,2,2,46,46,196,196,196,2,196,196,196,2,196,2,2,2,2,2},
|
||||
{415,130,241,185,312,175,309,199,94,281,47,47,2,2,2,2,206,307,221,2,2,2,2,2,239,239,239,239,239,206,206,206},
|
||||
{417,238,147,165,346,19,92,164,266,291,291,43,2,2,2,345,2,2,2,345,345,2,2,2,2,2,345,2,2,2,2,2},
|
||||
{456,192,86,182,35,174,342,102,210,210,210,393,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,256,256,158},
|
||||
{307,255,92,38,325,61,103,246,176,319,80,89,2,241,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{432,168,63,154,166,46,479,145,144,288,288,288,288,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{341,256,113,85,188,233,161,29,110,167,91,91,253,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{311,360,312,158,73,16,106,209,472,48,24,203,203,2,2,2,2,234,234,234,2,234,234,203,2,2,2,234,234,234,234,234},
|
||||
{437,196,161,100,132,246,395,187,35,35,35,2,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{438,174,338,145,155,276,422,374,4,463,463,99,224,70,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{426,225,211,130,325,283,353,96,282,23,299,2,2,2,63,63,2,276,276,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{430,101,288,38,200,332,325,193,123,123,88,2,2,2,2,2,231,231,139,139,139,139,139,139,139,139,139,139,139,139,139,139},
|
||||
{434,143,308,389,365,363,174,63,121,125,260,2,2,260,260,2,2,2,2,2,2,2,2,2,2,258,2,2,2,258,2,2},
|
||||
{453,123,201,141,229,223,234,494,102,102,102,2,2,102,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,252},
|
||||
{438,168,65,264,304,74,168,88,114,132,187,2,127,127,2,2,2,2,2,81,81,56,2,2,2,307,2,2,2,2,81,81},
|
||||
{324,181,141,129,33,171,173,291,227,373,52,301,301,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{448,119,431,111,135,50,242,95,148,49,49,49,68,2,2,2,2,2,2,2,2,49,2,2,2,2,2,2,2,2,2,2},
|
||||
{335,114,55,47,33,173,287,345,198,198,136,238,238,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{468,377,243,237,332,512,27,167,22,169,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{456,162,188,223,408,209,28,164,299,299,258,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{445,391,115,226,96,456,239,214,556,158,158,282,2,2,2,2,2,2,2,2,2,2,2,2,2,331,2,2,2,2,2,2},
|
||||
{360,397,130,172,407,479,295,13,38,199,199,346,2,2,2,2,2,2,145,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{512,136,129,361,180,61,274,128,422,27,292,165,2,2,2,2,2,2,363,117,117,117,117,2,2,2,2,363,2,2,2,2},
|
||||
{478,433,483,302,200,227,273,27,171,171,371,102,2,2,2,2,2,20,2,2,2,2,2,2,2,2,403,403,2,2,2,2},
|
||||
{485,158,454,86,212,60,93,40,209,188,188,106,2,231,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{390,448,111,145,47,555,367,317,315,52,429,435,429,429,2,2,2,2,2,2,2,2,229,2,2,229,2,2,2,229,2,2},
|
||||
{490,331,187,398,407,373,497,219,423,423,378,378,2,419,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{378,406,112,198,539,550,516,59,240,240,23,316,2,122,2,2,2,2,2,2,2,2,2,2,111,111,2,2,2,95,2,2},
|
||||
{474,373,248,330,40,113,105,273,103,407,2,165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{495,406,306,239,172,323,236,50,37,435,2,310,56,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{498,447,112,241,552,119,227,189,140,140,140,140,140,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{505,132,169,418,342,28,319,301,172,530,317,317,335,2,2,2,2,2,2,376,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{397,393,191,269,462,151,264,134,307,307,2,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,159,2,2,2,2,2},
|
||||
{485,491,325,149,122,145,228,100,311,64,2,62,137,2,137,2,2,2,2,2,2,2,392,2,2,2,2,2,2,2,2,2},
|
||||
{364,462,360,383,182,187,123,69,129,146,2,156,149,2,149,2,2,2,2,2,2,2,303,303,303,2,2,2,2,2,149,266},
|
||||
{507,195,130,401,363,171,483,20,86,464,2,89,89,2,26,2,2,2,2,2,425,425,2,2,2,2,2,2,2,2,2,2},
|
||||
{380,220,87,122,242,78,207,371,95,305,2,2,2,2,440,440,445,358,358,331,331,358,445,445,445,445,445,445,445,445,445,445},
|
||||
{507,221,247,137,182,90,28,207,325,438,2,2,2,2,2,187,232,438,2,2,68,37,37,37,37,37,37,37,37,37,161,2},
|
||||
{509,265,101,126,203,86,152,416,352,85,2,2,2,284,391,368,2,2,152,2,2,2,325,2,2,2,2,2,2,2,2,2},
|
||||
{572,359,332,480,68,535,59,504,365,21,2,2,246,54,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{415,178,178,372,415,400,73,82,348,99,2,23,325,44,2,2,2,2,2,2,2,2,325,2,2,2,2,2,2,2,2,2},
|
||||
{430,275,236,361,42,552,368,236,653,74,65,458,288,307,307,2,2,2,2,2,2,2,65,65,2,2,2,2,2,2,2,2},
|
||||
{434,139,58,437,130,441,188,15,63,145,145,145,300,2,2,2,2,300,2,2,2,2,2,2,2,2,401,401,401,401,401,401},
|
||||
{542,138,266,514,552,202,103,197,574,48,2,96,96,2,2,96,96,217,2,2,2,2,2,2,2,2,2,2,2,2,2,217},
|
||||
{546,494,72,272,550,219,213,209,169,404,69,464,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{602,466,332,458,99,244,255,183,446,670,2,186,323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,292,165,165,165,165},
|
||||
{422,413,561,110,242,62,436,478,18,150,606,88,643,2,249,2,2,2,2,456,2,2,2,2,2,2,2,2,2,2,2,456},
|
||||
{522,141,154,253,264,53,120,93,274,52,44,203,556,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{600,249,375,555,421,322,317,84,517,517,268,106,353,2,2,2,2,2,2,2,2,2,268,2,2,2,2,2,2,302,2,2},
|
||||
{555,516,310,438,290,559,52,265,248,193,285,441,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{555,300,232,386,470,300,355,177,57,407,450,279,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{544,177,79,306,256,402,205,496,398,115,115,43,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{534,274,194,220,575,81,206,544,341,85,137,429,429,429,429,344,2,2,2,2,2,315,315,315,315,315,315,72,72,72,2,2},
|
||||
{400,136,112,136,273,277,205,578,122,122,230,230,2,2,2,2,2,2,2,2,2,2,2,2,2,2,302,2,2,2,2,2},
|
||||
{576,421,115,52,253,373,17,657,43,178,178,58,485,485,485,485,485,485,2,2,2,159,159,159,159,2,619,2,2,2,2,2},
|
||||
{576,301,142,329,96,41,302,528,126,112,206,206,2,2,2,2,2,2,206,206,2,206,206,2,191,206,206,191,191,191,191,206},
|
||||
{548,538,508,250,539,102,73,285,119,433,480,480,2,2,2,480,480,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{622,526,294,56,498,176,237,351,25,26,474,55,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{446,163,469,481,240,278,51,373,491,13,22,419,2,2,2,2,2,2,2,2,2,176,176,2,2,2,2,2,2,2,2,2},
|
||||
{445,223,102,108,120,166,68,214,737,504,96,96,206,377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39,528},
|
||||
{453,121,489,84,434,505,78,575,468,372,468,468,83,468,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{425,355,128,58,194,82,438,117,10,34,34,35,112,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{432,479,328,443,253,634,271,429,406,543,406,543,543,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{433,294,192,205,152,70,99,68,392,169,309,390,390,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,199,2,2,2},
|
||||
{456,383,487,311,57,579,673,264,582,187,184,43,43,2,2,2,2,501,501,501,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{437,561,384,619,363,420,614,117,217,247,405,142,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{434,372,239,508,478,26,375,255,151,151,650,112,251,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{437,133,516,423,305,90,135,25,266,487,6,286,286,2,2,2,2,2,2,2,2,2,2,2,2,510,510,2,2,2,2,2},
|
||||
{463,341,170,401,178,79,305,98,162,166,32,392,335,335,335,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{610,477,478,516,318,184,267,423,190,494,494,2,336,336,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{611,211,491,224,47,54,124,268,271,271,223,2,2,2,2,2,2,2,2,2,2,2,2,359,2,2,2,2,2,2,2,2},
|
||||
{590,463,461,162,162,622,167,254,29,377,377,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{478,388,612,404,491,561,180,80,262,58,94,2,2,275,2,2,2,2,2,151,2,2,2,2,2,312,312,312,2,2,2,275},
|
||||
{629,225,67,623,298,588,354,49,41,185,176,63,63,63,2,2,2,2,2,2,2,2,2,2,2,2,8,435,32,32,435,435},
|
||||
{671,275,392,298,612,328,337,215,58,58,124,2,2,490,392,2,2,2,125,457,457,2,2,2,2,2,2,2,2,2,2,457},
|
||||
{448,126,129,168,209,340,40,96,509,509,509,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{667,246,160,68,737,203,168,628,46,128,358,2,2,2,121,121,2,2,2,2,2,2,560,121,2,2,2,2,2,2,2,121},
|
||||
{635,212,284,356,187,591,275,361,194,317,488,2,2,2,2,2,2,97,6,2,6,247,2,2,2,2,2,2,2,2,2,6},
|
||||
{612,395,104,86,264,321,521,325,252,53,178,100,100,100,16,343,343,343,343,343,2,2,2,2,2,2,2,2,2,343,343,343},
|
||||
{486,428,287,472,292,141,504,178,585,98,282,2,2,2,2,2,2,2,2,2,2,2,2,284,284,284,78,284,2,2,2,2},
|
||||
{612,327,212,565,450,385,201,649,423,491,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{462,579,236,447,60,162,427,258,73,742,742,2,742,742,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{495,440,89,439,65,207,459,407,139,131,624,2,380,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{469,507,276,227,66,237,260,386,27,666,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{646,393,273,238,24,13,253,127,368,316,316,316,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{626,196,111,465,386,431,181,414,614,391,349,318,389,2,389,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{667,257,290,122,109,523,95,26,282,49,374,236,236,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,88,2,2},
|
||||
{653,169,261,533,488,282,213,443,337,480,503,174,534,2,2,2,2,2,534,2,2,2,2,534,2,2,2,2,534,2,2,2},
|
||||
{670,555,160,90,604,604,50,459,376,545,316,180,526,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{639,253,95,380,108,448,223,254,381,30,6,644,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{642,160,702,90,157,254,278,521,650,277,74,554,122,2,2,2,2,2,2,517,174,174,174,2,2,2,2,2,2,2,2,2},
|
||||
{678,254,190,197,637,49,130,25,374,357,357,411,643,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,537,2,2},
|
||||
{512,347,65,546,434,87,18,123,672,412,316,6,699,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{657,233,108,38,147,53,136,168,408,477,477,279,268,289,2,2,2,2,2,2,289,2,2,2,2,2,2,2,2,289,289,2},
|
||||
{498,431,217,101,78,143,111,113,181,825,458,140,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{660,624,376,472,165,66,158,308,492,779,305,305,2,576,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{521,249,388,155,467,245,134,311,72,312,312,623,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{408,348,216,299,302,668,347,63,172,141,272,168,678,2,2,2,512,2,2,2,2,4,2,2,2,494,64,64,64,128,16,512},
|
||||
{669,421,230,70,212,845,237,347,148,76,823,472,2,2,2,132,2,2,2,2,2,2,2,383,132,383,2,2,383,383,383,383},
|
||||
{693,530,139,82,780,416,270,278,330,484,484,200,2,2,2,2,137,94,2,2,2,2,2,2,2,2,484,2,2,2,2,2},
|
||||
{672,150,164,622,196,75,302,119,42,314,314,132,60,60,60,298,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{705,302,411,705,691,160,809,40,32,867,826,826,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{684,229,138,46,407,399,82,254,267,31,31,45,2,209,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{707,323,409,27,31,157,492,463,886,412,251,251,304,190,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{715,521,636,304,402,459,435,571,611,214,214,43,43,358,2,2,2,2,358,2,2,2,2,2,2,358,358,358,2,2,358,358},
|
||||
{768,224,219,425,467,147,151,643,316,263,263,263,263,263,2,2,2,2,2,272,139,2,2,2,2,2,2,2,2,2,272,53},
|
||||
{555,543,434,78,850,174,277,194,4,100,471,69,69,424,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{690,206,572,877,600,129,288,52,19,147,222,222,147,147,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{793,279,264,566,252,495,872,492,482,107,294,503,350,350,2,2,2,2,2,2,2,285,285,273,273,273,273,2,2,2,2,2},
|
||||
{703,427,225,320,136,47,103,547,239,217,73,68,68,204,204,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{791,275,60,137,352,839,67,476,356,216,216,563,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{703,312,472,588,228,512,386,668,477,617,389,389,389,2,296,2,2,2,2,343,343,2,2,343,343,2,2,617,617,617,617,2},
|
||||
{709,509,697,145,252,194,304,192,192,623,623,4,423,2,2,2,199,423,2,2,2,222,222,2,2,623,623,623,623,623,2,222},
|
||||
{587,453,117,107,672,86,248,568,568,294,294,513,78,2,2,164,82,2,2,2,2,22,2,2,2,2,2,2,2,2,2,2},
|
||||
{741,466,378,135,737,131,159,469,59,2,59,59,187,2,204,2,2,2,2,2,2,2,2,2,798,2,2,798,798,798,798,798},
|
||||
{539,310,463,103,553,45,609,326,197,2,62,113,272,2,62,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{750,703,182,242,92,335,272,466,594,2,701,569,474,129,140,140,2,507,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{547,210,113,361,584,121,65,307,98,2,2,552,514,514,2,514,207,514,514,514,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{555,229,328,91,272,815,483,749,468,2,92,92,4,92,2,2,2,258,258,258,2,258,258,2,2,2,2,258,2,2,258,258},
|
||||
{580,145,358,434,630,73,604,366,366,2,2,398,398,207,2,207,487,2,2,487,207,2,2,207,207,207,2,2,2,2,207,207},
|
||||
{457,520,93,460,275,525,300,184,354,147,147,147,147,179,82,82,82,82,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{872,630,513,218,719,174,197,104,86,281,281,281,541,642,281,94,2,45,94,2,335,335,2,2,2,2,2,2,2,2,2,84},
|
||||
{765,421,129,298,867,365,222,476,401,142,90,22,22,88,226,657,2,2,477,2,2,2,2,2,226,226,2,226,2,2,2,226},
|
||||
{833,634,228,520,113,329,279,420,581,2,2,385,385,110,450,2,733,2,2,2,561,561,2,561,2,2,2,2,2,2,2,2},
|
||||
{587,553,360,539,227,800,312,143,536,2,2,2,64,64,64,2,2,2,179,179,493,2,2,184,184,184,58,2,2,2,493,493},
|
||||
{744,466,389,280,229,134,363,177,389,2,2,2,536,273,536,536,536,536,168,45,45,45,45,2,2,2,2,2,2,2,2,2},
|
||||
{841,222,158,469,253,91,347,241,766,2,2,2,88,88,88,439,439,439,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{462,653,478,67,269,150,474,711,220,669,669,669,669,669,390,352,325,2,229,545,545,545,545,545,545,545,545,2,545,352,309,352},
|
||||
{468,430,849,689,202,427,45,34,105,2,2,2,2,4,4,4,4,4,4,4,2,2,2,4,4,4,4,4,2,2,2,2},
|
||||
{610,289,503,744,775,512,605,454,484,2,2,2,444,466,145,631,2,631,631,631,631,631,631,631,631,631,2,2,631,631,631,858},
|
||||
{792,169,306,843,246,123,293,229,483,2,2,2,165,163,163,163,163,440,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{563,325,717,766,440,705,290,123,228,2,2,2,32,64,146,2,2,2,116,79,79,2,146,146,79,79,79,2,2,146,146,79},
|
||||
{795,185,350,211,82,537,106,680,62,2,2,537,423,423,423,2,2,501,501,2,501,2,501,2,2,2,2,2,2,2,2,2},
|
||||
{633,425,295,548,497,163,381,461,89,2,2,831,583,896,38,2,625,2,2,2,276,276,2,2,276,2,2,2,2,2,2,2},
|
||||
{767,318,84,97,208,387,423,196,417,2,396,396,396,396,396,128,128,2,2,2,328,328,4,4,4,4,101,2,2,328,82,16},
|
||||
{802,533,869,638,67,192,805,223,219,2,2,191,178,178,77,77,2,2,2,2,431,431,2,2,2,431,431,2,2,431,2,2},
|
||||
{781,638,410,399,336,465,856,426,28,2,4,4,6,6,2,2,2,449,372,372,449,449,449,2,2,449,449,449,449,449,449,2},
|
||||
{807,377,237,443,388,286,158,349,491,32,32,260,260,260,2,2,260,615,615,615,2,2,260,260,260,260,260,615,615,615,615,615},
|
||||
{780,359,766,618,41,596,86,636,287,707,707,96,49,373,613,373,2,2,2,2,2,2,2,613,613,613,2,2,2,2,2,2},
|
||||
{788,497,334,93,319,169,273,540,904,2,903,569,569,569,272,272,2,2,2,2,571,571,571,571,571,571,571,571,571,571,571,571},
|
||||
{814,652,456,774,624,870,27,739,464,2,108,578,578,561,295,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{818,280,99,873,165,426,341,74,479,342,727,684,684,662,662,2,2,2,2,2,2,662,2,2,2,2,2,2,2,2,2,2},
|
||||
{593,411,953,203,89,57,785,354,349,424,424,707,707,707,829,2,2,2,2,2,670,670,670,2,2,424,424,424,2,2,670,424},
|
||||
{629,560,621,245,683,633,495,551,472,2,31,74,489,684,555,684,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{901,490,693,410,666,119,703,593,201,61,70,70,774,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,418,418},
|
||||
{669,321,391,548,189,157,337,42,796,871,276,622,30,2,2,2,2,2,2,2,580,580,107,2,2,2,2,2,434,434,434,434},
|
||||
{610,236,633,300,681,358,72,281,148,466,466,283,275,2,386,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{929,360,102,893,329,136,515,33,170,581,268,35,777,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{859,584,475,745,506,900,40,869,143,612,175,275,209,12,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{822,581,76,382,72,347,964,324,137,61,61,28,623,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{655,330,324,151,166,431,58,174,142,115,1003,66,724,778,2,2,2,503,503,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{867,820,301,252,61,331,105,309,562,218,365,326,768,672,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{623,330,182,489,212,223,741,490,40,412,801,681,681,801,2,2,71,2,2,2,2,2,2,427,2,2,2,2,2,2,2,2},
|
||||
{859,844,510,859,118,190,550,29,159,622,622,382,258,382,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{612,237,272,53,534,682,372,935,494,536,536,599,599,599,2,536,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{843,730,235,233,816,495,598,134,131,604,227,378,378,553,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{667,397,121,526,321,660,848,729,357,137,268,711,521,521,2,2,2,2,2,2,2,2,2,2,2,2,2,194,2,2,2,521},
|
||||
{670,595,333,257,907,413,548,341,327,350,612,700,700,700,700,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{678,274,695,790,169,701,707,1084,470,123,846,846,217,121,317,2,2,2,83,83,83,83,83,83,83,83,83,2,2,2,2,2},
|
||||
{877,181,375,79,199,256,223,295,135,371,395,354,2,307,944,2,813,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{882,417,475,424,311,646,346,207,74,157,590,356,2,2,324,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{708,442,186,698,345,103,687,463,163,416,416,107,2,2,2,375,375,416,6,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{865,675,786,568,112,197,225,348,372,497,215,215,2,2,2,2,159,159,150,224,224,141,2,2,2,2,141,141,141,141,141,141},
|
||||
{693,726,117,167,535,725,224,78,716,100,460,299,2,2,2,2,921,744,2,2,2,2,2,378,2,2,178,178,178,2,178,178},
|
||||
{697,540,358,391,932,309,103,73,35,353,353,503,2,2,353,134,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{982,579,548,413,416,103,71,101,1039,526,684,684,2,2,656,2,2,2,2,2,2,2,2,2,2,2,656,656,656,2,656,656},
|
||||
{695,881,335,126,429,476,772,667,974,98,433,49,129,129,2,2,2,2,2,2,2,2,2,2,544,2,544,2,2,2,2,544},
|
||||
{705,770,134,178,940,944,654,600,46,797,797,591,2,145,616,2,2,2,2,2,2,389,389,2,122,2,2,2,389,389,909,389},
|
||||
{988,271,675,163,379,108,48,472,870,485,485,18,2,485,528,528,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{865,827,614,74,725,685,724,190,178,272,835,722,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{923,397,722,186,203,575,24,144,36,526,206,787,12,100,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{927,493,988,194,97,1006,377,578,105,248,707,784,98,784,2,2,2,2,2,2,2,2,2,370,370,2,370,2,2,2,2,2},
|
||||
{900,455,485,601,353,69,67,965,25,226,314,314,883,923,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{903,259,153,106,289,916,861,41,441,368,131,131,262,671,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{945,358,160,196,82,403,362,195,376,877,521,336,521,77,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{912,516,108,555,306,274,55,197,565,174,659,208,441,441,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{753,242,194,619,345,94,463,485,163,85,412,575,270,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{915,210,456,377,303,237,225,521,621,175,569,20,124,2,601,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{672,652,792,253,796,404,171,90,406,433,43,159,72,2,2,372,2,540,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{733,439,537,37,149,650,916,443,743,621,921,664,664,2,2,2,2,2,682,523,523,523,2,2,523,523,523,523,523,523,523,523},
|
||||
{982,344,812,567,243,52,246,369,439,205,600,739,730,2,2,2,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{982,604,126,65,633,657,22,776,161,45,725,44,4,2,2,2,2,2,2,2,2,2,269,269,2,2,2,2,2,2,2,2},
|
||||
{745,600,284,1117,459,1135,300,52,845,331,334,334,334,2,334,334,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{936,409,217,57,574,395,481,245,548,268,447,598,375,2,192,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{986,241,233,45,721,325,350,222,35,1065,1065,1065,1065,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{755,796,877,981,259,194,1180,215,90,658,662,662,662,2,36,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{981,626,987,827,466,458,578,346,475,223,223,223,342,1058,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,728},
|
||||
{949,422,941,491,66,786,592,429,307,123,40,478,478,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{992,723,625,251,431,544,309,466,700,644,484,837,904,320,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1077,496,819,340,974,122,39,1209,819,18,461,648,648,394,2,2,2,2,2,2,61,2,2,2,2,2,394,2,2,2,2,394},
|
||||
{999,674,212,673,279,579,462,754,89,866,345,110,110,887,2,2,2,2,2,707,707,2,2,2,2,2,2,2,2,2,2,707},
|
||||
{1083,356,367,357,559,213,606,477,71,103,790,103,299,299,2,2,2,2,2,2,406,406,2,2,2,2,2,2,2,2,2,2},
|
||||
{1005,260,389,960,501,714,118,73,334,1019,704,204,504,205,822,822,2,2,2,2,2,2,2,2,2,2,684,2,2,2,2,2},
|
||||
{738,749,769,610,306,326,328,578,479,840,840,840,68,192,2,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1010,937,449,474,154,456,766,318,275,444,709,2,778,778,778,806,779,779,2,2,2,2,2,2,2,2,806,2,2,2,287,287},
|
||||
{1011,780,134,945,183,42,741,25,252,164,205,222,222,222,147,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1094,640,912,223,67,472,623,623,1244,65,1009,1209,1209,812,387,2,2,2,513,2,2,2,2,2,2,2,2,2,2,2,1209,234},
|
||||
{722,375,264,390,515,498,1161,391,884,551,238,2,2,825,549,2,2,2,551,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1022,409,93,359,983,345,280,280,104,940,940,2,2,382,1039,2,2,2,2,831,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{997,525,680,120,466,728,288,110,1082,544,572,2,2,663,290,290,2,2,754,2,2,2,2,2,582,582,582,582,582,2,2,2},
|
||||
{1055,395,795,561,222,85,294,433,377,89,89,2,2,2,456,821,2,2,821,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1128,788,124,501,561,1015,419,787,48,620,705,2,2,2,2,88,18,2,215,215,215,2,2,215,215,2,2,2,215,2,2,2},
|
||||
{807,433,721,434,449,242,170,842,21,4,642,2,2,2,2,2,4,4,4,4,2,856,856,856,885,885,856,856,856,856,856,885},
|
||||
{1004,719,1041,460,551,516,135,417,130,698,698,2,2,2,655,655,655,655,655,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1017,568,930,1113,556,1299,114,881,690,475,641,2,2,2,779,779,103,2,528,2,2,2,2,2,2,528,528,2,2,910,910,2},
|
||||
{814,473,286,752,476,779,420,569,742,164,490,2,2,2,793,812,812,812,2,812,812,2,2,526,526,812,526,2,2,2,526,526},
|
||||
{818,301,273,664,206,971,895,590,912,523,523,2,2,452,384,255,2,130,130,130,130,865,2,2,2,255,2,2,2,2,2,2},
|
||||
{820,249,292,1017,1017,143,403,37,433,456,515,2,2,69,640,2,2,2,2,2,2,2,2,2,2,2,2,824,824,824,2,2},
|
||||
{865,1132,428,582,254,408,536,376,825,116,116,1266,1266,1266,705,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{635,503,594,203,456,1246,221,396,1151,178,66,2,781,587,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1157,395,446,280,1130,695,668,271,111,882,477,615,615,615,2,2,2,2,2,2,2,2,615,615,615,615,615,615,615,2,305,2},
|
||||
{830,397,932,519,818,113,367,694,88,535,535,414,343,175,2,2,2,2,2,2,2,2,2,2,414,864,2,2,864,864,864,864},
|
||||
{793,463,329,730,390,551,968,92,511,470,424,563,672,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1050,749,809,479,87,757,288,172,597,722,4,418,418,390,2,2,2,2,2,390,390,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1090,255,271,110,159,235,158,236,271,815,1300,416,416,416,2,2,416,416,2,2,2,399,791,791,2,791,2,2,2,2,791,791},
|
||||
{1058,417,271,172,312,363,184,191,28,183,759,214,759,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1057,385,263,395,901,274,727,340,1117,263,813,870,858,429,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1102,846,985,1085,764,124,764,51,874,612,478,801,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1120,665,311,695,319,1033,511,297,602,1030,1030,714,240,240,2,2,2,2,2,2,2,2,2,2,2,2,2,953,2,2,2,2},
|
||||
{1106,662,258,190,1315,214,530,263,318,904,877,1317,318,2,510,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1206,469,299,1052,655,114,189,213,321,188,64,475,475,2,2,662,662,662,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1120,1159,358,347,838,207,357,167,476,52,672,38,822,2,2,2,2,2,2,213,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1076,596,553,545,79,727,881,121,298,169,639,368,695,115,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1130,177,84,673,350,543,543,95,128,954,430,884,884,2,884,884,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{820,461,681,382,273,273,358,274,274,91,887,676,386,2,676,676,2,2,2,2,2,2,2,200,2,2,2,2,200,2,2,2},
|
||||
{1091,946,437,51,527,802,597,639,587,645,510,586,586,2,2,2,2,2,2,2,2,2,2,2,2,2,2,168,168,168,168,168},
|
||||
{1148,585,868,1282,666,417,733,1231,515,332,1213,337,337,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1103,276,174,408,233,170,955,108,530,354,585,38,677,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,476},
|
||||
{1167,478,1169,1053,563,371,108,772,413,497,1338,991,660,2,2,2,2,2,2,2,2,2,2,2,2,27,2,2,2,2,2,2},
|
||||
{1116,331,280,422,1109,341,570,243,849,241,566,61,608,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{898,782,478,1208,196,983,608,537,196,1141,141,296,715,715,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1099,1187,300,240,268,413,1366,634,184,768,773,365,783,224,783,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{904,660,1283,46,33,124,416,218,152,970,1241,305,307,307,307,260,894,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1127,553,287,58,739,99,514,739,766,42,580,241,598,598,936,936,936,629,629,629,629,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1142,370,287,925,307,1232,129,11,1284,1056,33,33,536,521,2,1286,2,2,2,2,2,2,2,2,2,2,2,2,847,847,847,847},
|
||||
{1297,600,419,985,846,493,186,109,147,239,197,762,762,327,327,1004,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1181,615,482,653,238,130,313,506,98,1314,730,730,730,730,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{921,613,628,1288,111,150,191,233,633,83,387,602,105,394,2,2,2,2,2,2,2,351,2,2,351,351,351,2,2,2,351,351},
|
||||
{1192,555,586,516,1288,733,64,653,364,273,421,215,75,75,2,2,2,2,2,2,953,953,953,953,8,383,383,2,161,383,953,953},
|
||||
{1160,617,505,1205,374,906,23,408,194,91,91,91,585,984,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1203,1101,497,352,254,309,464,123,607,1080,265,1145,1145,1145,284,284,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1210,656,1026,782,802,442,1319,734,794,165,165,796,93,796,2,829,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{963,646,721,1161,219,667,1088,485,692,692,663,535,553,662,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,686,686,2},
|
||||
{941,231,1038,309,173,770,413,560,855,660,721,1103,721,721,721,2,2,2,2,2,2,2,2,2,2,2,2,174,2,2,2,2},
|
||||
{1213,305,656,983,1399,1196,692,986,9,339,754,308,2,308,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1330,671,528,831,1426,735,33,425,364,119,363,978,2,761,483,476,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1190,286,513,881,390,215,387,130,749,554,1110,519,160,160,160,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1247,353,973,217,1044,1318,1115,319,203,390,1244,225,2,2,508,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{893,560,132,1420,721,191,568,799,412,22,322,93,2,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{882,1038,211,110,942,337,1305,1225,661,183,381,381,2,2,2,2,347,2,2,2,2,2,2,2,600,431,431,431,431,431,431,431},
|
||||
{1208,486,343,725,677,1204,135,139,924,170,1111,317,2,2,2,2,202,706,202,107,107,107,2,2,706,706,107,107,2,2,2,706},
|
||||
{1259,1017,456,298,443,838,137,744,551,334,36,951,2,2,2,699,718,2,2,984,2,2,2,2,2,2,984,984,2,2,2,2},
|
||||
{1212,1186,641,284,565,636,895,82,690,117,184,184,2,2,2,397,902,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1263,370,132,635,381,47,537,179,1192,301,1282,33,2,2,2,1553,2,2,2,2,2,2,2,2,2,2,2,307,307,2,2,2},
|
||||
{1015,593,112,1408,51,104,199,221,931,1010,928,928,2,2,878,878,2,2,2,2,731,731,2,731,731,2,731,2,731,731,731,2},
|
||||
{1223,434,851,152,140,1495,190,397,925,37,1080,430,2,2,204,2,759,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{939,1070,1288,254,973,901,321,109,568,713,336,988,2,946,262,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1276,636,569,258,325,675,342,85,88,579,833,833,833,833,520,2,2,2,2,520,520,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1288,1398,789,514,151,600,1618,1194,1419,441,234,204,1191,438,828,2,857,857,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1401,402,525,293,97,223,452,808,61,169,1023,1023,886,886,1023,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1001,644,263,164,136,939,624,95,489,1023,1107,331,331,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1401,741,509,797,47,157,1256,482,1513,899,736,780,780,210,2,2,2,2,783,783,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1047,880,369,402,641,446,639,586,277,396,419,275,825,820,2,2,2,238,238,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1273,701,831,1294,1580,137,162,415,563,11,92,116,116,116,2,2,2,2,2,2,1029,1029,1029,504,504,877,877,877,877,877,1029,1029},
|
||||
{1335,400,315,412,172,125,568,1024,58,601,398,985,640,577,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1057,1198,146,529,284,1286,160,135,75,686,648,1425,821,586,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1422,838,234,554,736,243,344,526,1108,33,1303,699,249,305,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1279,681,423,813,806,269,412,420,985,485,761,1013,649,796,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{938,614,523,557,898,624,178,461,287,985,371,371,260,613,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1040,998,324,93,887,497,1326,443,152,1193,595,80,80,80,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1027,1128,114,395,357,417,848,22,389,1257,734,838,838,301,900,2,90,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1040,420,960,882,64,661,292,146,976,427,689,248,248,248,638,2,2,2,2,2,2,2,2,2,2,2,2,861,861,861,2,861},
|
||||
{1041,1090,651,130,72,389,171,237,516,777,937,937,937,168,168,2,336,2,2,2,2,2,2,2,2,2,992,2,992,2,992,2},
|
||||
{987,1280,1245,1300,926,676,56,546,541,690,84,42,1000,1383,1383,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1058,454,1557,191,129,297,695,1390,1274,460,923,923,923,2,4,1059,2,2,2,2,2,2,2,2,2,2,2,2,2,1059,2,2},
|
||||
{1327,572,282,1022,907,1276,409,643,1050,633,187,187,187,2,228,45,2,2,2,2,2,2,320,2,2,2,2,2,2,2,2,2},
|
||||
{1395,529,461,402,194,392,122,781,111,162,780,593,593,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1062,212,784,63,252,873,1302,1108,1380,84,1375,1375,1375,2,2,2,375,374,2,980,2,2,2,980,980,980,2,2,2,2,2,2},
|
||||
{1384,549,430,781,946,879,901,924,741,114,14,451,36,2,2,2,2,287,287,287,803,803,803,803,2,2,2,803,803,803,803,803},
|
||||
{1413,627,1329,1092,526,197,31,417,1149,981,964,1003,685,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,717,717,2,2},
|
||||
{1084,1174,1601,949,910,960,500,461,1290,23,1042,636,212,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1091,793,1353,208,506,599,846,503,1011,247,289,61,1050,61,61,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1533,978,284,156,914,162,685,1184,252,1375,189,256,640,2,640,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1128,398,791,1170,76,661,408,259,756,495,79,553,10,10,1532,1532,1532,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1040,704,618,854,374,1470,274,383,941,519,351,351,351,351,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1427,988,498,1529,99,678,1323,149,33,426,543,543,335,1507,772,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1102,349,490,266,144,220,599,437,743,764,647,1128,605,265,324,324,324,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1118,724,1322,405,199,614,1087,885,1313,317,769,660,660,1158,535,2,2,2,373,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1120,772,743,488,346,126,784,584,943,153,311,133,133,969,605,605,2,2,2,2,2,2,2,605,2,2,2,2,2,2,2,2},
|
||||
{1441,791,233,141,141,316,89,296,462,1263,758,482,599,599,578,341,2,2,2,2,2,2,2,2,2,2,2,525,525,525,2,2},
|
||||
{1413,406,700,547,1166,250,518,543,104,331,205,205,691,691,2,2,118,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1485,400,1497,168,82,680,1103,554,249,702,493,101,296,236,2,236,236,944,944,2,2,394,2,2,2,2,2,2,2,2,2,2},
|
||||
{1139,809,117,522,955,1096,1120,1470,116,184,1565,1565,557,557,2,2,2,2,2,829,1326,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1142,984,1044,590,340,241,662,357,366,1305,2,125,631,474,2,2,2,980,2,2,2,2,2,2,2,2,2,2,2,2,2,1273},
|
||||
{1487,1010,320,966,785,847,954,1060,138,856,966,966,966,703,2,703,703,2,2,2,2,2,2,2,2,2,2,2,2,1279,2,1279},
|
||||
{1495,1178,874,415,1100,368,1057,1228,562,215,31,31,680,680,680,1208,2,2,2,2,2,2,2,2,1208,2,2,2,2,1208,1208,2},
|
||||
{1617,289,1033,169,355,260,30,45,721,906,88,44,44,418,417,218,2,2,846,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1623,499,308,1058,1184,1230,63,1515,433,110,763,763,422,954,954,954,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1531,621,210,755,482,82,1308,317,427,168,2,232,116,190,701,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,701},
|
||||
{1532,575,1245,360,249,630,133,1406,920,1539,63,63,76,82,82,2,2,2,770,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1102,785,118,93,1491,988,275,53,1328,26,2,2,240,647,240,761,761,761,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1478,722,113,1534,1751,115,1728,1234,777,282,508,508,1184,63,1184,855,855,2,2,2,738,738,578,578,2,2,2,2,2,2,2,2},
|
||||
{1482,961,1093,556,1746,628,427,689,510,751,684,37,37,1229,1256,882,1507,1507,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1228,425,1030,699,407,171,568,925,1104,97,2,2,1286,1286,1286,502,2,1219,1219,1219,1290,2,1219,1219,1219,1219,2,2,2,59,2,2},
|
||||
{1547,657,777,695,1254,224,933,367,212,385,2,2,2,1422,749,245,885,710,2,2,710,710,710,45,710,710,710,710,2,336,710,2},
|
||||
{1559,462,850,289,1570,71,512,858,810,835,2,2,2,2,1028,1205,1205,546,546,546,1205,1205,1205,1205,1205,2,1205,1205,1205,1205,1205,1205},
|
||||
{1192,888,701,164,131,613,282,237,525,366,2,2,2,2,1737,845,845,750,2,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,2,1261,1261},
|
||||
{1128,393,1522,96,160,581,540,120,441,176,2,2,2,2,2,2,1427,551,1102,1102,328,328,592,592,592,592,592,592,592,592,592,592},
|
||||
{1567,1265,372,1633,613,484,243,1523,21,275,2,2,2,431,431,431,431,2,2,978,489,889,889,889,889,889,889,889,2,2,2,2},
|
||||
{1522,1422,1017,124,499,451,731,1112,1355,1355,2,2,2,854,854,336,854,336,1297,2,2,2,193,193,193,193,193,2,2,2,2,2},
|
||||
{1605,1499,454,1072,686,732,309,295,940,551,2,2,880,264,264,973,2,2,72,314,2,2,2,890,890,2,2,2,2,2,2,2},
|
||||
{1598,397,1471,1471,1162,866,236,948,1557,737,2,2,153,737,1408,765,765,608,2,2,2,171,608,608,608,608,2,608,608,2,2,2},
|
||||
{1598,434,107,270,148,1317,835,123,642,1236,2,2,67,633,771,878,771,878,878,2,2,2,771,2,2,2,2,2,2,2,2,2},
|
||||
{1628,1502,1042,822,80,403,1335,684,464,426,671,671,336,336,336,2,425,896,2,2,2,2,1337,1337,1337,1337,1337,1337,2,2,2,2},
|
||||
{1607,1503,1072,471,221,277,854,1236,263,752,2,694,1657,934,553,2,2,2,498,498,2,802,2,46,2,2,2,2,2,2,2,2},
|
||||
{1756,1359,698,1584,446,724,729,419,660,1305,2,244,244,244,540,540,540,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1263,835,1533,789,1259,174,1497,557,644,203,2,289,604,434,434,434,2,844,844,2,2,2,1111,1111,1111,2,2,2,2,2,2,2},
|
||||
{1797,904,172,659,349,177,692,448,1141,990,640,99,1073,806,640,640,2,640,640,911,911,911,640,640,640,640,2,2,2,2,2,2},
|
||||
{1276,442,1008,1352,243,162,711,301,552,1002,668,668,384,71,384,384,2,2,2,2,2,727,727,727,777,777,777,777,777,777,2,777},
|
||||
{1600,1130,171,1113,813,722,117,990,37,24,969,94,825,1398,1398,1398,1398,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1682,449,1067,393,136,854,36,492,637,1053,247,1111,1111,1111,2,247,247,247,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1601,697,532,408,697,1140,1568,47,1499,780,1171,318,318,318,2,2,2,2,318,318,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1283,1078,791,873,655,412,389,835,292,958,1245,678,1611,1519,2,2,185,2,2,2,2,2,2,1245,1245,2,2,2,2,2,2,1245},
|
||||
{1822,589,236,205,797,39,241,1048,181,386,102,102,102,111,1361,1361,1361,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1342,705,302,595,1200,52,83,647,519,139,103,103,103,513,2,513,2,2,2,2,2,513,2,2,2,2,2,2,2,2,2,2},
|
||||
{1636,974,279,419,893,1608,1491,156,1486,115,730,730,863,509,924,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1732,1771,584,533,297,1056,669,293,146,311,1176,311,590,590,277,2,2,2,2,2,2,2,2,2,539,539,2,2,2,2,2,2},
|
||||
{1360,383,1470,502,1010,153,1588,619,1246,396,1107,1107,112,423,423,2,2,2,2,2,202,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1747,611,1788,1446,152,1335,710,1040,639,1279,788,788,265,1441,107,2,2,2,2,1441,1441,1441,1441,938,938,938,938,2,2,867,867,1441},
|
||||
{1682,867,333,102,628,891,654,506,995,684,961,563,1313,1313,1313,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1875,1576,924,677,461,134,1525,1619,44,701,299,743,728,791,791,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,791,791},
|
||||
{1744,1011,935,492,158,1645,795,1056,74,679,367,675,675,1229,1229,1229,2,2,2,2,2,2,2,2,2,2,2,2,2,1229,2,2},
|
||||
{1763,1018,1859,432,717,723,874,1294,1050,1800,1237,619,1074,2,10,1237,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1376,652,461,225,361,936,1073,1279,149,619,983,511,1994,2,2,1076,1076,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1780,1739,1357,1684,1586,736,208,966,1691,339,339,128,128,2,2,128,128,128,2,2,128,2,2,2,2,1929,2,2,338,2,2,338},
|
||||
{1289,907,228,665,1695,1735,489,214,762,1777,321,1674,932,2,2,2,2,1358,709,2,1959,1959,372,2,2,372,372,2,2,372,372,372},
|
||||
{1802,1645,453,1079,604,618,334,855,541,167,37,88,849,2,2,518,518,2,2,530,2,2,2,2,2,2,2,119,119,2,2,2},
|
||||
{1322,512,560,432,365,87,1835,1137,515,1271,1739,309,309,1229,1229,1229,2,2,2,2,2,2,2,2,416,416,416,416,2,2,2,2},
|
||||
{1444,394,1613,796,645,1406,186,158,402,1364,314,588,606,2,577,117,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1325,1300,1353,1575,33,730,46,1476,84,84,189,457,352,2,1479,2,2,2,2,2,2,2,2,2,2,2,2,1565,2,2,2,2},
|
||||
{1343,365,790,1047,983,1015,918,1469,1416,126,1238,1238,1238,1238,151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1861,1487,419,97,799,1791,458,1029,370,627,57,414,414,1540,247,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1480,1131,1089,1688,340,962,505,1816,139,44,1350,403,1385,1996,173,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1328,601,601,617,554,467,391,1545,162,1361,807,1565,1565,243,1344,2,725,510,510,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1892,441,977,228,1252,604,735,136,889,878,1319,1319,2127,2127,1963,367,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1898,787,769,1166,799,479,1066,390,821,1061,201,201,1339,703,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1850,1476,792,840,2037,229,1578,526,431,1485,1450,1001,1001,1001,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1948,1530,576,582,1069,119,2131,41,1178,1677,1677,1677,325,346,2,2,2,2,2,2,1401,2,33,2,2,2,2,2,2,71,71,71},
|
||||
{1540,791,518,419,1130,1068,299,1386,1378,134,859,859,71,162,2,71,71,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1889,1210,1246,1326,668,1199,77,565,1277,1607,874,1433,1433,77,2,681,2,2,2,2,2,2,2,679,2,2,2,2,2,2,2,2},
|
||||
{1520,1107,1082,687,484,1732,676,1595,467,653,1091,428,2113,332,332,332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1534,854,2007,1207,947,1773,1571,1505,909,1471,1655,1655,2334,1327,409,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2145,1069,662,709,737,1141,1737,827,1384,1628,107,107,1032,277,277,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1600,1823,1698,1268,623,583,1932,1674,522,529,1862,1281,246,989,246,2,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1570,1504,1414,1143,1999,1932,1015,1015,556,514,626,79,2,79,1795,1461,1461,2,2,2,2,2,2,2,1461,1461,1461,1461,1461,2,2,2},
|
||||
{1976,1433,820,504,421,1007,388,1083,635,82,1524,750,2,2,870,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2008,1773,416,1954,1314,742,1694,505,202,1747,785,375,2,2,2,477,1538,477,2,2,2,2,2,1309,1309,1309,1309,2,2,2,1309,2},
|
||||
{1480,807,1596,520,1139,213,1581,460,923,617,1305,939,2,2,2,2,53,53,1589,284,2,2,1589,1589,1589,1589,1589,1589,1589,1589,1589,1589},
|
||||
{1628,846,1504,138,464,401,501,506,967,1027,1540,1035,2,1921,1539,1539,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2304,1948,316,1063,237,607,1143,2575,1388,1022,127,251,2,438,1570,1570,1570,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1600,1338,196,1510,1371,1138,957,169,545,1176,1131,2460,1708,541,541,2,363,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1736,2186,725,1844,1638,825,592,648,193,1241,462,462,45,264,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}
|
||||
};
|
881
src/external/libCuba/src/divonne/KorobovCoeff.c-9689
vendored
Normal file
881
src/external/libCuba/src/divonne/KorobovCoeff.c-9689
vendored
Normal file
@ -0,0 +1,881 @@
|
||||
#define KOROBOV_MINDIM 2
|
||||
#define KOROBOV_MAXDIM 33
|
||||
#define MAXPRIME 9689
|
||||
|
||||
#define Hash(x) ((19945 - x)*(-47 + x))/121634
|
||||
|
||||
static int prime[] = {
|
||||
FIRST,47,53,59,67,71,79,83,89,97,103,109,113,127,131,137,139,149,151,
|
||||
157,163,173,179,181,191,193,199,211,223,227,229,233,239,241,251,257,263,
|
||||
269,277,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,
|
||||
389,397,401,409,419,421,431,433,439,443,449,457,461,467,479,487,491,499,
|
||||
503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,
|
||||
619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,
|
||||
743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,
|
||||
863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,
|
||||
997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,
|
||||
1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,
|
||||
1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,
|
||||
1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,
|
||||
1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,
|
||||
1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,
|
||||
1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,
|
||||
1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,
|
||||
1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,
|
||||
1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,
|
||||
2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,
|
||||
2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,
|
||||
2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,
|
||||
2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,
|
||||
2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,
|
||||
2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,
|
||||
2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,
|
||||
2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,
|
||||
2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,
|
||||
3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,
|
||||
3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,
|
||||
3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,
|
||||
3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,
|
||||
3511,3517,3527,3529,3533,3539,3547,3557,3571,3581,3583,3593,3607,3613,
|
||||
3623,3631,3643,3659,3671,3673,3677,3691,3701,3709,3719,3733,3739,3761,
|
||||
3767,3769,3779,3793,3797,3803,3821,3833,3847,3851,3853,3863,3877,3889,
|
||||
3907,3911,3917,3929,3943,3947,3967,3989,4001,4003,4007,4013,4019,4027,
|
||||
4049,4051,4057,4073,4079,4091,4099,4111,4127,4133,4139,4153,4159,4177,
|
||||
4201,4211,4217,4219,4229,4231,4243,4259,4271,4283,4289,4297,4327,4337,
|
||||
4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4451,4463,4481,
|
||||
4483,4493,4507,4517,4523,4547,4549,4561,4567,4583,4597,4603,4621,4637,
|
||||
4639,4651,4663,4673,4691,4703,4721,4723,4733,4751,4759,4783,4787,4789,
|
||||
4801,4813,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4943,4957,
|
||||
4969,4987,4993,5003,5021,5023,5039,5051,5059,5077,5087,5101,5119,5147,
|
||||
5153,5167,5171,5179,5189,5209,5227,5231,5237,5261,5273,5281,5297,5309,
|
||||
5323,5333,5347,5351,5381,5387,5399,5413,5431,5437,5449,5471,5479,5501,
|
||||
5507,5519,5531,5557,5563,5573,5591,5623,5639,5641,5647,5657,5669,5683,
|
||||
5701,5711,5737,5743,5749,5779,5783,5801,5813,5827,5843,5857,5869,5881,
|
||||
5903,5923,5927,5953,5981,5987,6007,6011,6029,6037,6053,6067,6089,6101,
|
||||
6113,6131,6151,6163,6173,6197,6211,6229,6247,6257,6277,6287,6311,6323,
|
||||
6343,6359,6373,6389,6421,6427,6449,6469,6481,6491,6521,6529,6547,6563,
|
||||
6581,6599,6619,6637,6653,6673,6691,6709,6733,6737,6763,6781,6803,6823,
|
||||
6841,6863,6883,6899,6917,6947,6961,6983,7001,7019,7043,7057,7079,7103,
|
||||
7127,7151,7159,7187,7211,7229,7253,7283,7297,7321,7349,7369,7393,7417,
|
||||
7433,7459,7487,7507,7537,7561,7583,7607,7639,7669,7687,7717,7741,7759,
|
||||
7793,7823,7853,7883,7907,7937,7963,7993,8039,8059,8093,8123,8161,8191,
|
||||
8221,8263,8297,8329,8369,8419,8447,8501,8527,8563,8609,8663,8699,8747,
|
||||
8803,8849,8893,8963,9029,9091,9157,9239,9319,9413,9533,MarkLast(9689)
|
||||
};
|
||||
|
||||
static short coeff[][32] = {
|
||||
{13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2},
|
||||
{23,17,12,11,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14},
|
||||
{18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5},
|
||||
{18,13,23,5,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2},
|
||||
{21,22,7,21,2,20,20,2,2,2,2,22,2,2,2,2,2,2,2,6,6,21,2,2,2,2,2,2,2,2,6,6},
|
||||
{29,19,27,32,6,8,2,2,2,2,2,8,8,2,2,2,2,9,9,9,9,2,2,2,2,2,2,2,9,9,2,2},
|
||||
{30,19,24,16,22,8,2,2,22,5,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{34,28,13,28,27,27,2,4,2,2,2,16,16,4,20,20,36,20,36,5,5,5,36,36,5,5,5,7,5,7,7,2},
|
||||
{35,19,33,8,21,30,8,2,4,2,4,4,2,2,2,2,2,2,2,2,2,17,2,2,11,25,11,17,17,17,17,17},
|
||||
{37,21,35,29,27,19,19,2,2,2,5,15,2,2,15,15,19,19,19,19,19,2,2,2,2,2,19,2,2,2,2,2},
|
||||
{45,44,13,25,17,47,30,2,30,2,2,2,2,2,2,2,2,2,19,19,19,17,17,2,2,2,2,2,2,2,2,2},
|
||||
{35,22,37,9,35,12,35,8,2,2,50,50,2,2,32,32,32,31,13,8,8,8,2,22,50,9,9,9,22,22,22,10},
|
||||
{29,24,43,36,49,2,2,8,4,25,49,25,2,2,8,10,10,10,5,5,5,40,10,33,40,40,2,27,10,25,25,25},
|
||||
{50,18,32,39,21,2,2,2,4,4,36,36,14,14,14,14,2,2,2,17,17,17,16,16,2,14,14,14,14,2,2,2},
|
||||
{31,28,45,20,18,43,43,13,28,2,2,2,31,31,31,31,31,2,2,2,43,43,2,2,2,2,2,2,2,2,30,2},
|
||||
{39,15,41,7,24,2,2,30,40,2,2,25,25,25,25,2,2,2,2,2,2,6,6,2,25,2,5,2,2,25,2,2},
|
||||
{44,20,29,39,7,21,21,21,2,2,45,2,2,2,49,49,49,49,49,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{56,20,22,13,18,35,35,6,2,4,2,4,2,2,2,23,16,16,4,23,2,34,52,2,34,2,4,2,2,2,23,16},
|
||||
{46,32,17,18,29,27,31,31,31,2,2,4,15,2,2,2,2,2,2,2,2,2,2,2,2,2,23,32,32,32,15,15},
|
||||
{62,42,43,17,23,13,13,2,2,13,2,2,2,2,2,2,2,10,2,2,2,2,9,10,2,2,2,19,9,9,9,9},
|
||||
{64,34,16,28,16,51,47,2,2,2,6,18,39,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,2},
|
||||
{74,26,44,25,50,24,54,39,58,42,2,42,42,2,2,2,2,2,2,2,2,33,33,2,2,39,11,2,2,58,39,58},
|
||||
{70,22,50,22,16,9,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{74,21,17,25,35,33,10,2,10,20,20,57,57,57,2,2,57,2,2,2,2,2,2,2,13,2,2,2,2,2,2,2},
|
||||
{81,18,10,11,47,38,71,37,2,37,2,2,2,2,2,26,26,26,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{55,30,85,42,16,36,45,67,2,2,68,2,2,2,2,2,2,2,68,10,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{64,17,24,26,49,12,10,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,59,2,2},
|
||||
{68,57,23,38,61,38,13,13,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,68,15,2,44,44,44,2,2,2},
|
||||
{94,28,58,29,13,5,15,8,66,2,2,2,39,39,15,66,2,2,6,6,2,2,66,66,66,66,2,2,2,2,2,66},
|
||||
{94,85,9,41,41,37,29,29,17,2,2,2,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,8},
|
||||
{89,32,75,77,77,13,2,30,30,2,2,2,2,2,2,2,2,2,2,67,67,2,2,2,2,2,2,2,2,8,19,32},
|
||||
{70,45,58,63,67,10,72,72,70,6,2,36,2,70,70,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{101,33,76,13,45,63,2,2,6,19,2,2,32,32,32,32,32,65,2,63,63,11,11,11,19,19,19,19,9,63,63,63},
|
||||
{70,89,44,37,19,45,2,2,2,8,10,8,54,54,80,80,80,80,80,2,116,2,116,2,2,80,40,51,100,100,8,2},
|
||||
{71,54,83,51,42,98,2,2,8,8,14,30,93,22,15,15,30,30,30,44,44,44,2,2,22,22,22,117,44,11,11,11},
|
||||
{109,37,51,113,17,10,2,2,17,17,55,2,55,55,55,55,55,55,2,2,2,57,48,48,55,55,2,2,55,2,2,55},
|
||||
{75,38,68,89,11,52,2,2,81,39,2,38,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2},
|
||||
{81,84,35,34,20,93,2,12,12,12,2,96,2,96,96,2,96,2,2,2,2,2,2,2,2,2,2,2,2,56,56,56},
|
||||
{104,32,56,46,77,11,35,35,24,56,19,2,2,2,78,2,2,75,2,2,2,2,78,2,2,2,2,2,2,2,2,2},
|
||||
{81,103,25,35,28,15,20,20,20,2,2,2,2,20,20,20,107,107,2,2,2,2,2,2,2,2,2,2,2,2,13,13},
|
||||
{119,75,42,29,74,23,54,36,39,2,2,4,4,19,19,2,2,2,2,2,2,2,2,54,2,2,2,2,2,2,2,54},
|
||||
{115,73,22,102,75,138,16,73,50,16,2,50,2,2,2,133,2,2,2,2,2,2,2,2,2,2,2,2,2,33,33,33},
|
||||
{119,48,66,51,14,22,20,20,2,2,2,2,2,60,2,2,2,2,2,2,2,2,60,2,2,2,2,2,2,60,2,65},
|
||||
{121,94,80,29,51,69,42,36,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2},
|
||||
{129,123,41,79,43,34,24,11,2,2,4,2,2,2,2,75,16,16,16,75,75,75,16,16,16,25,2,99,2,2,75,16},
|
||||
{128,33,35,68,22,8,62,94,2,2,2,62,62,2,98,2,2,4,98,2,2,32,81,32,32,32,98,98,98,98,98,98},
|
||||
{101,109,154,15,57,6,27,36,2,2,37,37,2,2,2,2,2,2,2,107,2,2,2,107,107,2,2,2,2,2,2,2},
|
||||
{106,40,24,38,61,118,106,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{149,111,58,79,127,13,41,33,27,16,30,2,61,2,72,2,2,2,2,2,2,2,2,2,2,2,2,75,75,2,2,2},
|
||||
{105,92,43,156,25,53,57,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{99,40,62,67,66,29,99,99,99,78,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79},
|
||||
{109,42,96,95,66,41,103,84,13,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{111,72,16,89,25,86,117,29,14,14,2,2,2,2,2,60,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{106,72,49,94,140,44,97,157,75,2,2,4,123,123,2,2,123,123,123,123,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{115,67,74,32,43,50,21,36,135,36,85,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{151,71,157,42,41,37,80,27,18,2,2,2,2,2,2,2,2,2,2,2,2,2,115,128,128,128,128,128,32,2,128,80},
|
||||
{119,91,38,30,92,44,32,76,22,2,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,129,2,2,129,2,2,2},
|
||||
{121,126,31,52,120,37,57,10,171,2,2,2,2,35,35,35,2,2,97,97,97,97,97,97,97,35,35,35,97,97,97,2},
|
||||
{155,86,49,104,87,94,64,45,61,91,91,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{164,121,44,166,47,33,7,15,13,2,2,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{128,120,133,17,71,52,25,107,42,21,21,2,2,2,2,4,4,96,2,9,9,2,9,94,94,94,94,94,94,94,94,96},
|
||||
{179,82,157,76,61,35,13,90,197,2,69,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39},
|
||||
{136,136,148,63,66,10,169,95,95,163,30,28,28,2,41,130,2,2,2,21,2,2,2,2,2,2,2,2,2,2,2,36},
|
||||
{131,40,112,63,55,30,53,79,79,79,2,79,2,2,2,2,2,79,2,2,2,2,14,36,2,21,21,21,21,2,2,91},
|
||||
{165,81,92,48,9,110,12,40,40,34,2,2,2,107,107,107,2,107,2,2,2,2,2,2,2,2,2,2,2,15,41,41},
|
||||
{169,66,170,97,35,56,55,86,32,32,2,2,2,2,14,2,40,2,37,2,2,37,40,40,40,2,2,2,37,37,37,37},
|
||||
{135,63,126,156,70,18,49,143,6,117,2,109,109,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{193,59,51,68,68,15,170,170,170,143,143,12,2,2,2,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{145,101,56,65,23,76,110,2,4,4,4,146,146,146,2,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,146,146},
|
||||
{144,129,26,98,36,46,47,52,52,52,82,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,91,2,2},
|
||||
{145,78,166,171,56,20,63,2,2,33,33,33,33,2,78,47,47,47,47,47,2,2,2,2,2,78,78,78,2,2,2,2},
|
||||
{191,69,176,54,47,75,167,2,2,2,188,188,188,30,30,2,67,67,117,2,117,117,117,2,2,36,2,2,2,2,2,2},
|
||||
{186,96,29,122,47,96,170,157,157,157,157,108,159,2,195,195,26,26,26,26,26,2,2,2,2,132,132,132,2,2,2,2},
|
||||
{151,118,226,91,54,49,33,2,2,2,2,4,4,4,143,143,2,2,143,25,25,25,2,143,143,143,143,143,143,143,143,143},
|
||||
{144,91,237,82,81,75,138,163,163,163,117,117,44,2,44,136,136,136,136,2,2,2,2,2,122,122,122,122,2,2,2,136},
|
||||
{189,78,178,64,118,27,189,2,2,67,67,110,110,110,110,2,28,28,2,2,2,2,2,2,2,102,2,2,2,2,2,2},
|
||||
{165,202,83,76,125,65,42,2,44,44,23,2,23,23,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{209,204,92,75,85,146,104,2,7,18,8,2,2,2,204,95,95,95,2,2,2,95,95,95,95,95,95,95,2,2,2,95},
|
||||
{169,68,89,16,193,82,33,262,262,175,148,148,148,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{171,162,78,43,61,17,112,10,171,182,118,33,2,2,2,2,118,2,2,2,2,2,2,151,2,2,2,2,2,2,2,2},
|
||||
{211,121,119,55,90,211,96,89,225,25,178,36,36,36,2,2,108,2,2,2,2,2,2,2,2,2,2,2,2,184,2,2},
|
||||
{154,101,83,17,16,210,41,79,70,158,2,27,27,2,2,2,2,2,2,2,2,2,2,2,2,153,2,2,2,2,2,2},
|
||||
{169,179,130,79,148,180,136,17,47,119,2,119,119,169,169,2,169,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{241,171,148,31,172,34,66,60,156,140,2,2,2,75,75,2,2,2,2,2,2,2,190,190,2,2,2,30,2,2,2,2},
|
||||
{229,189,183,106,118,138,82,149,265,39,2,2,265,2,2,2,2,2,2,130,2,2,2,71,71,2,2,2,71,2,2,71},
|
||||
{165,157,127,21,64,15,80,130,130,130,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,74,2},
|
||||
{221,130,203,84,83,83,29,121,54,54,2,141,2,2,94,94,94,4,4,4,2,4,2,2,2,54,54,108,16,16,94,52},
|
||||
{230,166,20,160,121,102,153,94,16,67,2,2,2,2,2,2,97,97,97,2,2,97,97,2,97,97,97,97,97,97,97,97},
|
||||
{181,79,137,119,139,24,77,17,50,25,25,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{239,242,192,40,41,62,124,193,193,31,193,2,2,2,2,2,2,2,2,2,2,2,2,148,2,2,2,2,2,2,2,2},
|
||||
{239,178,73,122,239,51,95,48,78,88,78,2,2,2,2,2,2,2,2,2,2,2,144,144,2,2,144,144,144,2,144,144},
|
||||
{234,117,198,34,143,21,74,6,252,252,98,2,2,2,2,197,38,2,2,2,2,2,47,2,47,47,47,47,2,2,2,47},
|
||||
{179,110,38,28,58,39,16,29,42,125,202,8,8,129,4,4,2,2,2,67,67,2,2,2,2,2,2,8,67,67,2,2},
|
||||
{246,53,189,50,18,59,179,179,7,137,137,2,2,103,103,103,103,40,40,40,2,2,2,2,73,73,73,2,103,103,103,103},
|
||||
{239,133,87,92,193,12,206,238,238,238,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{191,244,60,193,18,32,193,104,74,125,125,66,2,2,2,2,2,2,2,2,2,2,125,125,2,125,125,125,2,2,2,2},
|
||||
{177,74,90,91,172,219,63,84,32,2,2,196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{253,143,54,39,122,32,75,107,234,2,6,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{282,89,71,88,30,23,81,105,105,2,2,105,105,131,107,2,2,2,2,2,195,195,2,2,29,29,21,21,128,195,195,195},
|
||||
{259,115,171,40,156,71,67,24,24,2,2,2,24,4,4,4,2,234,2,2,2,2,2,2,2,2,2,74,74,2,2,2},
|
||||
{264,237,49,203,247,108,75,75,75,2,2,32,16,8,16,16,16,164,14,164,2,2,32,16,8,16,16,32,42,42,42,2},
|
||||
{264,106,89,51,29,226,23,286,286,151,151,151,151,151,2,2,2,2,2,2,31,31,31,2,2,2,2,2,2,2,2,284},
|
||||
{194,215,82,23,213,23,108,127,74,2,201,32,178,2,285,2,2,2,2,285,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{196,267,251,111,231,14,30,52,95,2,154,53,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{266,67,22,101,102,157,53,95,130,2,42,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{281,205,107,178,236,122,122,316,76,215,215,2,60,2,2,2,2,2,2,227,2,2,2,2,2,2,2,2,27,2,2,2},
|
||||
{271,89,65,195,132,162,102,45,56,174,104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{200,169,170,121,155,68,131,167,78,113,113,2,2,64,2,2,2,2,2,2,2,2,2,2,2,2,2,173,2,2,2,2},
|
||||
{288,143,265,264,71,19,231,169,27,27,27,2,2,2,2,2,2,2,2,2,2,2,2,2,51,2,2,2,2,2,2,2},
|
||||
{311,141,96,173,90,119,134,151,35,252,39,2,39,39,2,2,2,2,2,2,2,2,2,113,113,2,2,2,2,2,2,113},
|
||||
{311,230,52,138,225,346,162,216,216,91,160,182,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{275,167,128,244,184,184,44,210,237,139,139,139,139,2,2,2,2,2,2,2,2,2,2,73,2,2,2,2,2,2,2,2},
|
||||
{176,156,83,135,46,197,108,63,33,33,33,2,133,2,213,213,213,213,133,133,2,133,2,2,133,133,2,2,2,2,2,2},
|
||||
{283,125,141,192,89,181,106,208,124,124,2,112,112,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{289,191,171,152,191,173,54,13,21,56,56,56,2,2,2,2,2,2,2,2,2,220,2,2,2,2,2,2,2,2,2,2},
|
||||
{334,305,132,132,99,126,54,116,164,105,2,105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,287,2,2,2,2},
|
||||
{240,166,44,193,153,333,15,99,246,99,2,2,99,99,2,2,2,2,195,195,195,2,195,195,2,263,263,2,195,195,195,263},
|
||||
{246,194,265,79,225,65,24,62,46,181,2,2,2,314,2,2,2,2,2,2,2,215,2,2,2,2,2,2,2,2,2,2},
|
||||
{229,334,285,302,21,26,24,97,64,40,2,2,2,231,231,231,231,65,2,148,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{251,295,55,249,135,173,164,78,261,261,2,2,2,2,114,2,2,2,2,2,256,142,142,2,2,2,2,2,2,2,2,185},
|
||||
{232,153,55,60,181,79,107,70,29,35,2,2,58,58,2,58,2,2,2,2,61,61,2,61,61,2,2,61,61,90,2,90},
|
||||
{246,116,45,146,109,90,32,103,133,119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{246,113,146,232,162,262,204,47,45,331,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{360,150,84,275,13,26,368,49,244,244,63,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{239,295,174,87,30,87,85,36,103,36,2,278,2,2,2,2,2,2,163,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{356,300,75,310,123,301,200,107,183,37,218,37,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{358,207,168,150,150,21,156,50,195,275,275,275,2,2,2,2,2,251,2,2,2,251,251,251,251,251,251,251,251,251,2,2},
|
||||
{322,194,234,62,236,147,239,400,255,255,80,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{326,276,134,100,143,113,115,221,13,339,194,194,194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{337,132,27,45,14,81,110,84,238,224,211,2,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{192,213,113,174,403,117,342,342,311,35,35,2,2,2,2,2,2,2,2,101,2,2,2,2,2,2,2,2,2,101,101,101},
|
||||
{264,273,316,53,40,330,51,285,115,219,147,2,2,2,335,2,2,2,2,2,173,2,173,2,2,173,173,173,173,173,173,83},
|
||||
{254,293,407,118,54,296,160,231,4,4,93,2,2,2,2,2,60,61,2,2,120,127,127,127,88,88,88,88,88,88,88,88},
|
||||
{341,78,336,263,281,164,99,334,296,114,109,2,163,163,163,163,2,2,2,2,2,2,2,125,125,292,292,292,292,125,125,125},
|
||||
{355,87,212,100,89,210,133,344,120,45,45,138,138,138,138,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{274,141,46,219,158,284,38,79,73,185,35,6,81,2,2,2,2,53,2,2,81,81,2,81,2,2,2,53,53,53,53,53},
|
||||
{349,303,439,19,95,240,174,191,2,162,162,2,2,2,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{360,91,201,205,67,181,59,77,2,44,103,103,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,125},
|
||||
{283,154,261,91,77,147,227,105,116,311,256,256,2,116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,32,2},
|
||||
{287,288,111,89,249,370,55,16,248,67,67,115,2,2,134,134,2,2,2,2,2,2,2,2,2,2,2,2,2,22,22,22},
|
||||
{284,270,282,37,29,181,160,49,285,285,374,250,2,374,374,2,2,2,179,179,35,2,179,179,2,179,179,2,2,285,285,285},
|
||||
{359,305,52,36,243,231,7,92,2,68,68,307,62,45,2,2,112,311,311,311,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{288,119,218,137,364,38,27,380,2,2,211,23,33,2,2,2,2,2,225,225,225,2,2,225,225,225,2,2,2,2,2,2},
|
||||
{277,155,232,309,370,365,348,75,214,214,214,4,4,2,2,2,210,210,210,210,210,210,210,2,2,2,2,2,2,2,2,2},
|
||||
{292,204,91,41,124,190,107,322,125,125,125,125,125,25,25,62,2,2,146,146,2,2,62,146,2,146,114,146,114,2,2,2},
|
||||
{282,195,192,409,68,99,253,106,2,2,2,231,55,55,2,323,323,55,55,285,285,285,285,2,2,2,2,2,2,285,285,323},
|
||||
{299,122,174,403,113,77,63,275,2,2,2,138,276,227,38,227,2,237,2,2,2,2,2,2,2,2,2,2,352,352,352,2},
|
||||
{282,222,268,86,21,109,353,408,2,2,2,2,135,12,12,216,241,241,241,241,241,241,241,241,241,303,303,303,135,135,135,2},
|
||||
{374,94,89,257,137,246,186,196,2,2,2,2,2,454,122,122,122,122,2,2,2,28,28,94,94,94,94,94,122,122,122,122},
|
||||
{288,92,62,428,122,153,481,66,2,2,2,250,250,177,177,177,177,279,279,279,279,279,279,279,2,2,279,177,177,177,177,177},
|
||||
{288,370,141,284,207,192,450,67,2,2,2,183,217,217,217,183,183,167,202,202,202,202,167,167,2,2,2,164,164,80,167,167},
|
||||
{286,293,199,39,158,332,242,103,2,2,2,408,266,315,2,2,365,253,315,315,315,315,315,2,2,315,2,2,2,2,2,2},
|
||||
{407,83,435,187,40,16,52,65,2,2,244,39,77,119,119,2,2,2,119,342,342,2,2,2,2,2,342,2,2,58,58,119},
|
||||
{398,88,78,57,260,203,203,43,131,131,131,204,204,322,204,2,102,2,325,325,325,325,2,2,2,2,2,2,2,2,2,2},
|
||||
{390,174,70,155,163,67,225,49,2,34,34,151,151,2,2,111,2,2,111,111,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{393,129,393,169,23,192,168,47,2,2,312,150,71,2,150,2,2,2,61,2,2,61,2,2,2,2,2,2,2,2,2,2},
|
||||
{408,136,71,63,63,159,222,68,181,181,124,227,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{294,169,79,242,160,123,178,290,186,186,56,399,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{415,228,69,68,193,122,21,362,33,22,362,57,2,2,2,2,46,46,196,196,196,2,196,196,196,2,196,2,2,2,2,2},
|
||||
{415,130,241,185,312,175,309,199,94,281,47,47,2,2,2,2,206,307,221,2,2,2,2,2,239,239,239,239,239,206,206,206},
|
||||
{417,238,147,165,346,19,92,164,266,291,291,43,2,2,2,345,2,2,2,345,345,2,2,2,2,2,345,2,2,2,2,2},
|
||||
{456,192,86,182,35,174,342,102,210,210,210,393,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,256,256,158},
|
||||
{307,255,92,38,325,61,103,246,176,319,80,89,2,241,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{432,168,63,154,166,46,479,145,144,288,288,288,288,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{341,256,113,85,188,233,161,29,110,167,91,91,253,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{311,360,312,158,73,16,106,209,472,48,24,203,203,2,2,2,2,234,234,234,2,234,234,203,2,2,2,234,234,234,234,234},
|
||||
{437,196,161,100,132,246,395,187,35,35,35,2,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{438,174,338,145,155,276,422,374,4,463,463,99,224,70,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{426,225,211,130,325,283,353,96,282,23,299,2,2,2,63,63,2,276,276,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{430,101,288,38,200,332,325,193,123,123,88,2,2,2,2,2,231,231,139,139,139,139,139,139,139,139,139,139,139,139,139,139},
|
||||
{434,143,308,389,365,363,174,63,121,125,260,2,2,260,260,2,2,2,2,2,2,2,2,2,2,258,2,2,2,258,2,2},
|
||||
{453,123,201,141,229,223,234,494,102,102,102,2,2,102,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,252},
|
||||
{438,168,65,264,304,74,168,88,114,132,187,2,127,127,2,2,2,2,2,81,81,56,2,2,2,307,2,2,2,2,81,81},
|
||||
{324,181,141,129,33,171,173,291,227,373,52,301,301,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{448,119,431,111,135,50,242,95,148,49,49,49,68,2,2,2,2,2,2,2,2,49,2,2,2,2,2,2,2,2,2,2},
|
||||
{335,114,55,47,33,173,287,345,198,198,136,238,238,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{468,377,243,237,332,512,27,167,22,169,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{456,162,188,223,408,209,28,164,299,299,258,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{445,391,115,226,96,456,239,214,556,158,158,282,2,2,2,2,2,2,2,2,2,2,2,2,2,331,2,2,2,2,2,2},
|
||||
{360,397,130,172,407,479,295,13,38,199,199,346,2,2,2,2,2,2,145,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{512,136,129,361,180,61,274,128,422,27,292,165,2,2,2,2,2,2,363,117,117,117,117,2,2,2,2,363,2,2,2,2},
|
||||
{478,433,483,302,200,227,273,27,171,171,371,102,2,2,2,2,2,20,2,2,2,2,2,2,2,2,403,403,2,2,2,2},
|
||||
{485,158,454,86,212,60,93,40,209,188,188,106,2,231,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{390,448,111,145,47,555,367,317,315,52,429,435,429,429,2,2,2,2,2,2,2,2,229,2,2,229,2,2,2,229,2,2},
|
||||
{490,331,187,398,407,373,497,219,423,423,378,378,2,419,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{378,406,112,198,539,550,516,59,240,240,23,316,2,122,2,2,2,2,2,2,2,2,2,2,111,111,2,2,2,95,2,2},
|
||||
{474,373,248,330,40,113,105,273,103,407,2,165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{495,406,306,239,172,323,236,50,37,435,2,310,56,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{498,447,112,241,552,119,227,189,140,140,140,140,140,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{505,132,169,418,342,28,319,301,172,530,317,317,335,2,2,2,2,2,2,376,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{397,393,191,269,462,151,264,134,307,307,2,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,159,2,2,2,2,2},
|
||||
{485,491,325,149,122,145,228,100,311,64,2,62,137,2,137,2,2,2,2,2,2,2,392,2,2,2,2,2,2,2,2,2},
|
||||
{364,462,360,383,182,187,123,69,129,146,2,156,149,2,149,2,2,2,2,2,2,2,303,303,303,2,2,2,2,2,149,266},
|
||||
{507,195,130,401,363,171,483,20,86,464,2,89,89,2,26,2,2,2,2,2,425,425,2,2,2,2,2,2,2,2,2,2},
|
||||
{380,220,87,122,242,78,207,371,95,305,2,2,2,2,440,440,445,358,358,331,331,358,445,445,445,445,445,445,445,445,445,445},
|
||||
{507,221,247,137,182,90,28,207,325,438,2,2,2,2,2,187,232,438,2,2,68,37,37,37,37,37,37,37,37,37,161,2},
|
||||
{509,265,101,126,203,86,152,416,352,85,2,2,2,284,391,368,2,2,152,2,2,2,325,2,2,2,2,2,2,2,2,2},
|
||||
{572,359,332,480,68,535,59,504,365,21,2,2,246,54,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{415,178,178,372,415,400,73,82,348,99,2,23,325,44,2,2,2,2,2,2,2,2,325,2,2,2,2,2,2,2,2,2},
|
||||
{430,275,236,361,42,552,368,236,653,74,65,458,288,307,307,2,2,2,2,2,2,2,65,65,2,2,2,2,2,2,2,2},
|
||||
{434,139,58,437,130,441,188,15,63,145,145,145,300,2,2,2,2,300,2,2,2,2,2,2,2,2,401,401,401,401,401,401},
|
||||
{542,138,266,514,552,202,103,197,574,48,2,96,96,2,2,96,96,217,2,2,2,2,2,2,2,2,2,2,2,2,2,217},
|
||||
{546,494,72,272,550,219,213,209,169,404,69,464,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{602,466,332,458,99,244,255,183,446,670,2,186,323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,292,165,165,165,165},
|
||||
{422,413,561,110,242,62,436,478,18,150,606,88,643,2,249,2,2,2,2,456,2,2,2,2,2,2,2,2,2,2,2,456},
|
||||
{522,141,154,253,264,53,120,93,274,52,44,203,556,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{600,249,375,555,421,322,317,84,517,517,268,106,353,2,2,2,2,2,2,2,2,2,268,2,2,2,2,2,2,302,2,2},
|
||||
{555,516,310,438,290,559,52,265,248,193,285,441,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{555,300,232,386,470,300,355,177,57,407,450,279,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{544,177,79,306,256,402,205,496,398,115,115,43,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{534,274,194,220,575,81,206,544,341,85,137,429,429,429,429,344,2,2,2,2,2,315,315,315,315,315,315,72,72,72,2,2},
|
||||
{400,136,112,136,273,277,205,578,122,122,230,230,2,2,2,2,2,2,2,2,2,2,2,2,2,2,302,2,2,2,2,2},
|
||||
{576,421,115,52,253,373,17,657,43,178,178,58,485,485,485,485,485,485,2,2,2,159,159,159,159,2,619,2,2,2,2,2},
|
||||
{576,301,142,329,96,41,302,528,126,112,206,206,2,2,2,2,2,2,206,206,2,206,206,2,191,206,206,191,191,191,191,206},
|
||||
{548,538,508,250,539,102,73,285,119,433,480,480,2,2,2,480,480,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{622,526,294,56,498,176,237,351,25,26,474,55,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{446,163,469,481,240,278,51,373,491,13,22,419,2,2,2,2,2,2,2,2,2,176,176,2,2,2,2,2,2,2,2,2},
|
||||
{445,223,102,108,120,166,68,214,737,504,96,96,206,377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39,528},
|
||||
{453,121,489,84,434,505,78,575,468,372,468,468,83,468,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{425,355,128,58,194,82,438,117,10,34,34,35,112,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{432,479,328,443,253,634,271,429,406,543,406,543,543,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{433,294,192,205,152,70,99,68,392,169,309,390,390,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,199,2,2,2},
|
||||
{456,383,487,311,57,579,673,264,582,187,184,43,43,2,2,2,2,501,501,501,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{437,561,384,619,363,420,614,117,217,247,405,142,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{434,372,239,508,478,26,375,255,151,151,650,112,251,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{437,133,516,423,305,90,135,25,266,487,6,286,286,2,2,2,2,2,2,2,2,2,2,2,2,510,510,2,2,2,2,2},
|
||||
{463,341,170,401,178,79,305,98,162,166,32,392,335,335,335,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{610,477,478,516,318,184,267,423,190,494,494,2,336,336,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{611,211,491,224,47,54,124,268,271,271,223,2,2,2,2,2,2,2,2,2,2,2,2,359,2,2,2,2,2,2,2,2},
|
||||
{590,463,461,162,162,622,167,254,29,377,377,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{478,388,612,404,491,561,180,80,262,58,94,2,2,275,2,2,2,2,2,151,2,2,2,2,2,312,312,312,2,2,2,275},
|
||||
{629,225,67,623,298,588,354,49,41,185,176,63,63,63,2,2,2,2,2,2,2,2,2,2,2,2,8,435,32,32,435,435},
|
||||
{671,275,392,298,612,328,337,215,58,58,124,2,2,490,392,2,2,2,125,457,457,2,2,2,2,2,2,2,2,2,2,457},
|
||||
{448,126,129,168,209,340,40,96,509,509,509,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{667,246,160,68,737,203,168,628,46,128,358,2,2,2,121,121,2,2,2,2,2,2,560,121,2,2,2,2,2,2,2,121},
|
||||
{635,212,284,356,187,591,275,361,194,317,488,2,2,2,2,2,2,97,6,2,6,247,2,2,2,2,2,2,2,2,2,6},
|
||||
{612,395,104,86,264,321,521,325,252,53,178,100,100,100,16,343,343,343,343,343,2,2,2,2,2,2,2,2,2,343,343,343},
|
||||
{486,428,287,472,292,141,504,178,585,98,282,2,2,2,2,2,2,2,2,2,2,2,2,284,284,284,78,284,2,2,2,2},
|
||||
{612,327,212,565,450,385,201,649,423,491,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{462,579,236,447,60,162,427,258,73,742,742,2,742,742,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{495,440,89,439,65,207,459,407,139,131,624,2,380,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{469,507,276,227,66,237,260,386,27,666,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{646,393,273,238,24,13,253,127,368,316,316,316,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{626,196,111,465,386,431,181,414,614,391,349,318,389,2,389,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{667,257,290,122,109,523,95,26,282,49,374,236,236,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,88,2,2},
|
||||
{653,169,261,533,488,282,213,443,337,480,503,174,534,2,2,2,2,2,534,2,2,2,2,534,2,2,2,2,534,2,2,2},
|
||||
{670,555,160,90,604,604,50,459,376,545,316,180,526,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{639,253,95,380,108,448,223,254,381,30,6,644,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{642,160,702,90,157,254,278,521,650,277,74,554,122,2,2,2,2,2,2,517,174,174,174,2,2,2,2,2,2,2,2,2},
|
||||
{678,254,190,197,637,49,130,25,374,357,357,411,643,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,537,2,2},
|
||||
{512,347,65,546,434,87,18,123,672,412,316,6,699,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{657,233,108,38,147,53,136,168,408,477,477,279,268,289,2,2,2,2,2,2,289,2,2,2,2,2,2,2,2,289,289,2},
|
||||
{498,431,217,101,78,143,111,113,181,825,458,140,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{660,624,376,472,165,66,158,308,492,779,305,305,2,576,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{521,249,388,155,467,245,134,311,72,312,312,623,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{408,348,216,299,302,668,347,63,172,141,272,168,678,2,2,2,512,2,2,2,2,4,2,2,2,494,64,64,64,128,16,512},
|
||||
{669,421,230,70,212,845,237,347,148,76,823,472,2,2,2,132,2,2,2,2,2,2,2,383,132,383,2,2,383,383,383,383},
|
||||
{693,530,139,82,780,416,270,278,330,484,484,200,2,2,2,2,137,94,2,2,2,2,2,2,2,2,484,2,2,2,2,2},
|
||||
{672,150,164,622,196,75,302,119,42,314,314,132,60,60,60,298,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{705,302,411,705,691,160,809,40,32,867,826,826,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{684,229,138,46,407,399,82,254,267,31,31,45,2,209,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{707,323,409,27,31,157,492,463,886,412,251,251,304,190,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{715,521,636,304,402,459,435,571,611,214,214,43,43,358,2,2,2,2,358,2,2,2,2,2,2,358,358,358,2,2,358,358},
|
||||
{768,224,219,425,467,147,151,643,316,263,263,263,263,263,2,2,2,2,2,272,139,2,2,2,2,2,2,2,2,2,272,53},
|
||||
{555,543,434,78,850,174,277,194,4,100,471,69,69,424,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{690,206,572,877,600,129,288,52,19,147,222,222,147,147,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{793,279,264,566,252,495,872,492,482,107,294,503,350,350,2,2,2,2,2,2,2,285,285,273,273,273,273,2,2,2,2,2},
|
||||
{703,427,225,320,136,47,103,547,239,217,73,68,68,204,204,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{791,275,60,137,352,839,67,476,356,216,216,563,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{703,312,472,588,228,512,386,668,477,617,389,389,389,2,296,2,2,2,2,343,343,2,2,343,343,2,2,617,617,617,617,2},
|
||||
{709,509,697,145,252,194,304,192,192,623,623,4,423,2,2,2,199,423,2,2,2,222,222,2,2,623,623,623,623,623,2,222},
|
||||
{587,453,117,107,672,86,248,568,568,294,294,513,78,2,2,164,82,2,2,2,2,22,2,2,2,2,2,2,2,2,2,2},
|
||||
{741,466,378,135,737,131,159,469,59,2,59,59,187,2,204,2,2,2,2,2,2,2,2,2,798,2,2,798,798,798,798,798},
|
||||
{539,310,463,103,553,45,609,326,197,2,62,113,272,2,62,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{750,703,182,242,92,335,272,466,594,2,701,569,474,129,140,140,2,507,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{547,210,113,361,584,121,65,307,98,2,2,552,514,514,2,514,207,514,514,514,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{555,229,328,91,272,815,483,749,468,2,92,92,4,92,2,2,2,258,258,258,2,258,258,2,2,2,2,258,2,2,258,258},
|
||||
{580,145,358,434,630,73,604,366,366,2,2,398,398,207,2,207,487,2,2,487,207,2,2,207,207,207,2,2,2,2,207,207},
|
||||
{457,520,93,460,275,525,300,184,354,147,147,147,147,179,82,82,82,82,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{872,630,513,218,719,174,197,104,86,281,281,281,541,642,281,94,2,45,94,2,335,335,2,2,2,2,2,2,2,2,2,84},
|
||||
{765,421,129,298,867,365,222,476,401,142,90,22,22,88,226,657,2,2,477,2,2,2,2,2,226,226,2,226,2,2,2,226},
|
||||
{833,634,228,520,113,329,279,420,581,2,2,385,385,110,450,2,733,2,2,2,561,561,2,561,2,2,2,2,2,2,2,2},
|
||||
{587,553,360,539,227,800,312,143,536,2,2,2,64,64,64,2,2,2,179,179,493,2,2,184,184,184,58,2,2,2,493,493},
|
||||
{744,466,389,280,229,134,363,177,389,2,2,2,536,273,536,536,536,536,168,45,45,45,45,2,2,2,2,2,2,2,2,2},
|
||||
{841,222,158,469,253,91,347,241,766,2,2,2,88,88,88,439,439,439,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{462,653,478,67,269,150,474,711,220,669,669,669,669,669,390,352,325,2,229,545,545,545,545,545,545,545,545,2,545,352,309,352},
|
||||
{468,430,849,689,202,427,45,34,105,2,2,2,2,4,4,4,4,4,4,4,2,2,2,4,4,4,4,4,2,2,2,2},
|
||||
{610,289,503,744,775,512,605,454,484,2,2,2,444,466,145,631,2,631,631,631,631,631,631,631,631,631,2,2,631,631,631,858},
|
||||
{792,169,306,843,246,123,293,229,483,2,2,2,165,163,163,163,163,440,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{563,325,717,766,440,705,290,123,228,2,2,2,32,64,146,2,2,2,116,79,79,2,146,146,79,79,79,2,2,146,146,79},
|
||||
{795,185,350,211,82,537,106,680,62,2,2,537,423,423,423,2,2,501,501,2,501,2,501,2,2,2,2,2,2,2,2,2},
|
||||
{633,425,295,548,497,163,381,461,89,2,2,831,583,896,38,2,625,2,2,2,276,276,2,2,276,2,2,2,2,2,2,2},
|
||||
{767,318,84,97,208,387,423,196,417,2,396,396,396,396,396,128,128,2,2,2,328,328,4,4,4,4,101,2,2,328,82,16},
|
||||
{802,533,869,638,67,192,805,223,219,2,2,191,178,178,77,77,2,2,2,2,431,431,2,2,2,431,431,2,2,431,2,2},
|
||||
{781,638,410,399,336,465,856,426,28,2,4,4,6,6,2,2,2,449,372,372,449,449,449,2,2,449,449,449,449,449,449,2},
|
||||
{807,377,237,443,388,286,158,349,491,32,32,260,260,260,2,2,260,615,615,615,2,2,260,260,260,260,260,615,615,615,615,615},
|
||||
{780,359,766,618,41,596,86,636,287,707,707,96,49,373,613,373,2,2,2,2,2,2,2,613,613,613,2,2,2,2,2,2},
|
||||
{788,497,334,93,319,169,273,540,904,2,903,569,569,569,272,272,2,2,2,2,571,571,571,571,571,571,571,571,571,571,571,571},
|
||||
{622,309,913,550,994,90,257,588,29,526,526,526,496,496,576,2,2,2,2,2,182,182,182,2,2,447,447,447,447,447,447,182},
|
||||
{814,652,456,774,624,870,27,739,464,2,108,578,578,561,295,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{818,280,99,873,165,426,341,74,479,342,727,684,684,662,662,2,2,2,2,2,2,662,2,2,2,2,2,2,2,2,2,2},
|
||||
{593,411,953,203,89,57,785,354,349,424,424,707,707,707,829,2,2,2,2,2,670,670,670,2,2,424,424,424,2,2,670,424},
|
||||
{629,560,621,245,683,633,495,551,472,2,31,74,489,684,555,684,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{901,490,693,410,666,119,703,593,201,61,70,70,774,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,418,418},
|
||||
{669,321,391,548,189,157,337,42,796,871,276,622,30,2,2,2,2,2,2,2,580,580,107,2,2,2,2,2,434,434,434,434},
|
||||
{610,236,633,300,681,358,72,281,148,466,466,283,275,2,386,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{929,360,102,893,329,136,515,33,170,581,268,35,777,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{859,584,475,745,506,900,40,869,143,612,175,275,209,12,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{822,581,76,382,72,347,964,324,137,61,61,28,623,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{655,330,324,151,166,431,58,174,142,115,1003,66,724,778,2,2,2,503,503,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{867,820,301,252,61,331,105,309,562,218,365,326,768,672,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{623,330,182,489,212,223,741,490,40,412,801,681,681,801,2,2,71,2,2,2,2,2,2,427,2,2,2,2,2,2,2,2},
|
||||
{859,844,510,859,118,190,550,29,159,622,622,382,258,382,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{612,237,272,53,534,682,372,935,494,536,536,599,599,599,2,536,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{843,730,235,233,816,495,598,134,131,604,227,378,378,553,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{667,397,121,526,321,660,848,729,357,137,268,711,521,521,2,2,2,2,2,2,2,2,2,2,2,2,2,194,2,2,2,521},
|
||||
{939,783,796,676,259,643,103,289,15,471,80,80,2,239,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,888},
|
||||
{670,595,333,257,907,413,548,341,327,350,612,700,700,700,700,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{678,274,695,790,169,701,707,1084,470,123,846,846,217,121,317,2,2,2,83,83,83,83,83,83,83,83,83,2,2,2,2,2},
|
||||
{877,181,375,79,199,256,223,295,135,371,395,354,2,307,944,2,813,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{882,417,475,424,311,646,346,207,74,157,590,356,2,2,324,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{708,442,186,698,345,103,687,463,163,416,416,107,2,2,2,375,375,416,6,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{865,675,786,568,112,197,225,348,372,497,215,215,2,2,2,2,159,159,150,224,224,141,2,2,2,2,141,141,141,141,141,141},
|
||||
{844,244,672,489,839,263,14,233,422,392,8,392,2,2,2,2,2,2,815,815,815,815,257,257,105,105,2,2,2,815,815,815},
|
||||
{693,726,117,167,535,725,224,78,716,100,460,299,2,2,2,2,921,744,2,2,2,2,2,378,2,2,178,178,178,2,178,178},
|
||||
{898,559,396,742,51,143,411,221,116,756,756,756,2,2,2,701,701,2,2,2,2,240,225,256,322,322,240,240,240,240,240,322},
|
||||
{697,540,358,391,932,309,103,73,35,353,353,503,2,2,353,134,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{982,579,548,413,416,103,71,101,1039,526,684,684,2,2,656,2,2,2,2,2,2,2,2,2,2,2,656,656,656,2,656,656},
|
||||
{695,881,335,126,429,476,772,667,974,98,433,49,129,129,2,2,2,2,2,2,2,2,2,2,544,2,544,2,2,2,2,544},
|
||||
{859,361,215,569,255,378,543,436,220,34,105,105,816,816,816,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{705,770,134,178,940,944,654,600,46,797,797,591,2,145,616,2,2,2,2,2,2,389,389,2,122,2,2,2,389,389,909,389},
|
||||
{642,757,247,513,372,54,546,971,271,61,61,1018,2,143,332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{988,271,675,163,379,108,48,472,870,485,485,18,2,485,528,528,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{865,827,614,74,725,685,724,190,178,272,835,722,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{923,397,722,186,203,575,24,144,36,526,206,787,12,100,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{718,359,103,558,684,560,67,35,120,342,680,265,265,265,2,2,265,2,2,2,2,2,2,2,2,2,430,2,2,2,2,2},
|
||||
{927,493,988,194,97,1006,377,578,105,248,707,784,98,784,2,2,2,2,2,2,2,2,2,370,370,2,370,2,2,2,2,2},
|
||||
{900,455,485,601,353,69,67,965,25,226,314,314,883,923,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{903,259,153,106,289,916,861,41,441,368,131,131,262,671,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{945,358,160,196,82,403,362,195,376,877,521,336,521,77,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{912,516,108,555,306,274,55,197,565,174,659,208,441,441,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{753,242,194,619,345,94,463,485,163,85,412,575,270,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{940,226,320,666,269,54,542,174,109,290,754,524,649,2,202,2,2,2,2,2,2,2,776,202,776,776,776,2,2,202,202,202},
|
||||
{915,210,456,377,303,237,225,521,621,175,569,20,124,2,601,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{672,652,792,253,796,404,171,90,406,433,43,159,72,2,2,372,2,540,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{733,439,537,37,149,650,916,443,743,621,921,664,664,2,2,2,2,2,682,523,523,523,2,2,523,523,523,523,523,523,523,523},
|
||||
{982,344,812,567,243,52,246,369,439,205,600,739,730,2,2,2,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{982,604,126,65,633,657,22,776,161,45,725,44,4,2,2,2,2,2,2,2,2,2,269,269,2,2,2,2,2,2,2,2},
|
||||
{745,600,284,1117,459,1135,300,52,845,331,334,334,334,2,334,334,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{936,409,217,57,574,395,481,245,548,268,447,598,375,2,192,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{986,241,233,45,721,325,350,222,35,1065,1065,1065,1065,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{755,796,877,981,259,194,1180,215,90,658,662,662,662,2,36,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{981,626,987,827,466,458,578,346,475,223,223,223,342,1058,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,728},
|
||||
{949,422,941,491,66,786,592,429,307,123,40,478,478,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{992,723,625,251,431,544,309,466,700,644,484,837,904,320,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1077,496,819,340,974,122,39,1209,819,18,461,648,648,394,2,2,2,2,2,2,61,2,2,2,2,2,394,2,2,2,2,394},
|
||||
{999,674,212,673,279,579,462,754,89,866,345,110,110,887,2,2,2,2,2,707,707,2,2,2,2,2,2,2,2,2,2,707},
|
||||
{1083,356,367,357,559,213,606,477,71,103,790,103,299,299,2,2,2,2,2,2,406,406,2,2,2,2,2,2,2,2,2,2},
|
||||
{1005,260,389,960,501,714,118,73,334,1019,704,204,504,205,822,822,2,2,2,2,2,2,2,2,2,2,684,2,2,2,2,2},
|
||||
{738,749,769,610,306,326,328,578,479,840,840,840,68,192,2,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1010,937,449,474,154,456,766,318,275,444,709,2,778,778,778,806,779,779,2,2,2,2,2,2,2,2,806,2,2,2,287,287},
|
||||
{1011,780,134,945,183,42,741,25,252,164,205,222,222,222,147,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1118,427,294,404,268,217,922,515,19,1045,1045,2,833,291,448,2,2,2,2,2,2,2,2,2,175,2,2,2,2,2,2,2},
|
||||
{1094,640,912,223,67,472,623,623,1244,65,1009,1209,1209,812,387,2,2,2,513,2,2,2,2,2,2,2,2,2,2,2,1209,234},
|
||||
{722,375,264,390,515,498,1161,391,884,551,238,2,2,825,549,2,2,2,551,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{792,250,299,210,496,682,94,207,220,227,227,2,2,227,73,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1022,409,93,359,983,345,280,280,104,940,940,2,2,382,1039,2,2,2,2,831,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1027,925,413,335,327,826,250,122,293,773,564,541,420,420,420,774,763,2,2,2,2,2,2,900,110,110,2,763,2,2,2,2},
|
||||
{1028,730,807,119,209,146,230,498,164,309,309,2,2,2,693,912,430,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{997,525,680,120,466,728,288,110,1082,544,572,2,2,663,290,290,2,2,754,2,2,2,2,2,582,582,582,582,582,2,2,2},
|
||||
{1055,395,795,561,222,85,294,433,377,89,89,2,2,2,456,821,2,2,821,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{997,614,240,638,755,575,874,321,600,235,665,2,2,2,154,154,767,767,2,767,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{802,298,672,424,104,623,152,159,476,760,66,2,2,2,215,215,490,490,490,2,2,2,2,2,490,490,490,490,490,490,490,490},
|
||||
{1128,788,124,501,561,1015,419,787,48,620,705,2,2,2,2,88,18,2,215,215,215,2,2,215,215,2,2,2,215,2,2,2},
|
||||
{807,433,721,434,449,242,170,842,21,4,642,2,2,2,2,2,4,4,4,4,2,856,856,856,885,885,856,856,856,856,856,885},
|
||||
{755,612,235,265,369,855,414,362,478,518,518,2,2,64,16,8,32,4,16,8,8,1041,501,1041,2,2,64,16,8,8,16,270},
|
||||
{1004,719,1041,460,551,516,135,417,130,698,698,2,2,2,655,655,655,655,655,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1017,568,930,1113,556,1299,114,881,690,475,641,2,2,2,779,779,103,2,528,2,2,2,2,2,2,528,528,2,2,910,910,2},
|
||||
{814,473,286,752,476,779,420,569,742,164,490,2,2,2,793,812,812,812,2,812,812,2,2,526,526,812,526,2,2,2,526,526},
|
||||
{818,301,273,664,206,971,895,590,912,523,523,2,2,452,384,255,2,130,130,130,130,865,2,2,2,255,2,2,2,2,2,2},
|
||||
{820,249,292,1017,1017,143,403,37,433,456,515,2,2,69,640,2,2,2,2,2,2,2,2,2,2,2,2,824,824,824,2,2},
|
||||
{1078,527,589,244,170,892,827,606,1165,773,189,2,2,240,22,2,2,2,2,2,2,759,621,621,621,621,621,621,621,621,621,621},
|
||||
{865,1132,428,582,254,408,536,376,825,116,116,1266,1266,1266,705,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1062,268,389,1325,598,276,1270,48,572,439,302,2,544,609,544,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1065,517,247,1142,247,674,385,120,592,177,98,2,956,364,275,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{635,503,594,203,456,1246,221,396,1151,178,66,2,781,587,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1157,395,446,280,1130,695,668,271,111,882,477,615,615,615,2,2,2,2,2,2,2,2,615,615,615,615,615,615,615,2,305,2},
|
||||
{830,397,932,519,818,113,367,694,88,535,535,414,343,175,2,2,2,2,2,2,2,2,2,2,414,864,2,2,864,864,864,864},
|
||||
{793,463,329,730,390,551,968,92,511,470,424,563,672,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1050,749,809,479,87,757,288,172,597,722,4,418,418,390,2,2,2,2,2,390,390,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1084,402,130,1077,276,154,1068,779,511,853,83,757,757,38,2,2,2,2,2,202,2,2,2,2,2,2,2,2,2,2,757,2},
|
||||
{1090,255,271,110,159,235,158,236,271,815,1300,416,416,416,2,2,416,416,2,2,2,399,791,791,2,791,2,2,2,2,791,791},
|
||||
{1058,417,271,172,312,363,184,191,28,183,759,214,759,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1057,385,263,395,901,274,727,340,1117,263,813,870,858,429,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1102,846,985,1085,764,124,764,51,874,612,478,801,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1120,665,311,695,319,1033,511,297,602,1030,1030,714,240,240,2,2,2,2,2,2,2,2,2,2,2,2,2,953,2,2,2,2},
|
||||
{814,293,763,661,575,631,524,636,112,691,595,1103,405,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1106,662,258,190,1315,214,530,263,318,904,877,1317,318,2,510,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1206,469,299,1052,655,114,189,213,321,188,64,475,475,2,2,662,662,662,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1120,1159,358,347,838,207,357,167,476,52,672,38,822,2,2,2,2,2,2,213,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1076,596,553,545,79,727,881,121,298,169,639,368,695,115,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1130,177,84,673,350,543,543,95,128,954,430,884,884,2,884,884,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1222,412,430,707,691,746,131,607,311,607,112,217,912,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{820,461,681,382,273,273,358,274,274,91,887,676,386,2,676,676,2,2,2,2,2,2,2,200,2,2,2,2,200,2,2,2},
|
||||
{1096,1166,209,407,1127,400,974,322,428,906,631,134,171,2,2,2,2,664,664,664,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1091,946,437,51,527,802,597,639,587,645,510,586,586,2,2,2,2,2,2,2,2,2,2,2,2,2,2,168,168,168,168,168},
|
||||
{1148,585,868,1282,666,417,733,1231,515,332,1213,337,337,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1103,276,174,408,233,170,955,108,530,354,585,38,677,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,476},
|
||||
{1167,478,1169,1053,563,371,108,772,413,497,1338,991,660,2,2,2,2,2,2,2,2,2,2,2,2,27,2,2,2,2,2,2},
|
||||
{1108,437,1160,324,868,686,361,399,786,1161,1161,707,731,731,655,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1116,331,280,422,1109,341,570,243,849,241,566,61,608,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{898,782,478,1208,196,983,608,537,196,1141,141,296,715,715,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1099,1187,300,240,268,413,1366,634,184,768,773,365,783,224,783,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1158,945,300,1115,205,495,435,302,187,774,774,843,843,284,284,2,2,2,2,909,933,933,933,2,2,909,909,2,2,2,2,909},
|
||||
{904,660,1283,46,33,124,416,218,152,970,1241,305,307,307,307,260,894,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1127,553,287,58,739,99,514,739,766,42,580,241,598,598,936,936,936,629,629,629,629,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1142,370,287,925,307,1232,129,11,1284,1056,33,33,536,521,2,1286,2,2,2,2,2,2,2,2,2,2,2,2,847,847,847,847},
|
||||
{1140,814,528,677,84,1192,305,637,335,451,103,325,77,969,2,651,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1297,600,419,985,846,493,186,109,147,239,197,762,762,327,327,1004,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1181,615,482,653,238,130,313,506,98,1314,730,730,730,730,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{921,613,628,1288,111,150,191,233,633,83,387,602,105,394,2,2,2,2,2,2,2,351,2,2,351,351,351,2,2,2,351,351},
|
||||
{1192,555,586,516,1288,733,64,653,364,273,421,215,75,75,2,2,2,2,2,2,953,953,953,953,8,383,383,2,161,383,953,953},
|
||||
{1160,617,505,1205,374,906,23,408,194,91,91,91,585,984,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1203,1101,497,352,254,309,464,123,607,1080,265,1145,1145,1145,284,284,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1210,656,1026,782,802,442,1319,734,794,165,165,796,93,796,2,829,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{963,646,721,1161,219,667,1088,485,692,692,663,535,553,662,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,686,686,2},
|
||||
{966,590,140,297,189,844,633,12,847,742,742,244,281,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{941,231,1038,309,173,770,413,560,855,660,721,1103,721,721,721,2,2,2,2,2,2,2,2,2,2,2,2,174,2,2,2,2},
|
||||
{1213,305,656,983,1399,1196,692,986,9,339,754,308,2,308,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{972,768,1109,523,642,546,1452,29,1296,13,813,813,2,1496,2,2,2,2,2,2,2,165,165,165,165,165,165,2,2,2,2,544},
|
||||
{1330,671,528,831,1426,735,33,425,364,119,363,978,2,761,483,476,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1188,217,838,237,379,202,785,949,479,169,348,872,2,872,872,2,2,2,2,2,2,1028,2,2,2,2,2,2,2,2,2,2},
|
||||
{1190,286,513,881,390,215,387,130,749,554,1110,519,160,160,160,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1247,353,973,217,1044,1318,1115,319,203,390,1244,225,2,2,508,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{893,560,132,1420,721,191,568,799,412,22,322,93,2,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{987,774,678,175,145,264,588,97,1308,6,828,1129,2,2,2,45,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{955,980,753,96,574,259,1327,556,342,1415,1036,1036,478,478,478,478,507,2,2,2,2,151,2,2,317,2,2,2,2,2,595,595},
|
||||
{882,1038,211,110,942,337,1305,1225,661,183,381,381,2,2,2,2,347,2,2,2,2,2,2,2,600,431,431,431,431,431,431,431},
|
||||
{1208,486,343,725,677,1204,135,139,924,170,1111,317,2,2,2,2,202,706,202,107,107,107,2,2,706,706,107,107,2,2,2,706},
|
||||
{1259,1017,456,298,443,838,137,744,551,334,36,951,2,2,2,699,718,2,2,984,2,2,2,2,2,2,984,984,2,2,2,2},
|
||||
{1212,1186,641,284,565,636,895,82,690,117,184,184,2,2,2,397,902,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1263,370,132,635,381,47,537,179,1192,301,1282,33,2,2,2,1553,2,2,2,2,2,2,2,2,2,2,2,307,307,2,2,2},
|
||||
{1223,433,252,572,424,82,221,107,382,430,203,461,2,915,362,964,2,2,964,2,2,2,2,2,964,964,964,964,964,485,485,485},
|
||||
{1015,593,112,1408,51,104,199,221,931,1010,928,928,2,2,878,878,2,2,2,2,731,731,2,731,731,2,731,2,731,731,731,2},
|
||||
{1220,410,1193,352,260,434,469,41,1090,961,961,728,2,2,330,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{898,1043,391,1289,29,830,184,321,1136,85,1133,1082,864,864,2,2,2,2,2,2,2,2,789,789,2,789,789,2,2,789,789,2},
|
||||
{1223,434,851,152,140,1495,190,397,925,37,1080,430,2,2,204,2,759,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{989,1043,184,232,64,403,284,745,171,171,995,223,380,380,1400,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{939,1070,1288,254,973,901,321,109,568,713,336,988,2,946,262,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1276,636,569,258,325,675,342,85,88,579,833,833,833,833,520,2,2,2,2,520,520,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{982,508,815,214,206,602,448,685,446,572,1549,8,1047,1047,1047,2,2,2,2,2,2,2,363,502,2,2,71,363,2,2,363,363},
|
||||
{1288,1398,789,514,151,600,1618,1194,1419,441,234,204,1191,438,828,2,857,857,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1002,342,1045,757,1008,979,322,240,1211,171,552,123,2,129,129,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1401,402,525,293,97,223,452,808,61,169,1023,1023,886,886,1023,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1001,644,263,164,136,939,624,95,489,1023,1107,331,331,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1011,475,845,532,567,951,663,295,877,1275,227,39,618,683,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1401,741,509,797,47,157,1256,482,1513,899,736,780,780,210,2,2,2,2,783,783,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1047,880,369,402,641,446,639,586,277,396,419,275,825,820,2,2,2,238,238,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1273,701,831,1294,1580,137,162,415,563,11,92,116,116,116,2,2,2,2,2,2,1029,1029,1029,504,504,877,877,877,877,877,1029,1029},
|
||||
{1335,400,315,412,172,125,568,1024,58,601,398,985,640,577,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1453,947,486,485,453,415,1164,684,504,605,422,998,727,727,2,2,2,1136,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1057,1198,146,529,284,1286,160,135,75,686,648,1425,821,586,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1052,442,936,64,132,1378,1323,161,161,161,230,131,12,12,2,2,2,2,2,2,2,2,2,2,2,998,998,998,998,2,2,2},
|
||||
{1422,838,234,554,736,243,344,526,1108,33,1303,699,249,305,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1279,681,423,813,806,269,412,420,985,485,761,1013,649,796,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{938,614,523,557,898,624,178,461,287,985,371,371,260,613,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1335,834,652,528,536,523,497,60,173,777,238,59,4,59,4,8,2,2,2,559,559,559,559,559,559,559,2,2,559,559,559,2},
|
||||
{1040,998,324,93,887,497,1326,443,152,1193,595,80,80,80,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1302,1116,283,1006,891,838,768,373,468,968,1178,1178,1269,1269,876,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1027,1128,114,395,357,417,848,22,389,1257,734,838,838,301,900,2,90,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1072,724,717,877,873,369,1031,698,917,1641,1641,1641,53,549,549,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{987,1243,424,240,53,1150,558,292,1107,574,814,1474,1474,1068,1186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,859,2,2},
|
||||
{1040,420,960,882,64,661,292,146,976,427,689,248,248,248,638,2,2,2,2,2,2,2,2,2,2,2,2,861,861,861,2,861},
|
||||
{1040,522,666,398,78,208,293,818,134,867,147,147,482,2,4,629,629,629,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{987,1280,1245,1300,926,676,56,546,541,690,84,42,1000,1383,1383,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1324,588,1378,592,1445,1029,759,1296,739,931,363,704,312,704,704,704,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1058,454,1557,191,129,297,695,1390,1274,460,923,923,923,2,4,1059,2,2,2,2,2,2,2,2,2,2,2,2,2,1059,2,2},
|
||||
{1327,572,282,1022,907,1276,409,643,1050,633,187,187,187,2,228,45,2,2,2,2,2,2,320,2,2,2,2,2,2,2,2,2},
|
||||
{1395,958,237,101,559,891,560,47,524,747,197,589,589,917,887,887,887,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1395,529,461,402,194,392,122,781,111,162,780,593,593,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1378,541,848,848,347,856,102,104,183,156,395,130,1377,2,2,2,159,159,159,2,2,2,772,2,2,2,2,2,2,2,2,2},
|
||||
{1062,212,784,63,252,873,1302,1108,1380,84,1375,1375,1375,2,2,2,375,374,2,980,2,2,2,980,980,980,2,2,2,2,2,2},
|
||||
{1384,549,430,781,946,879,901,924,741,114,14,451,36,2,2,2,2,287,287,287,803,803,803,803,2,2,2,803,803,803,803,803},
|
||||
{1413,627,1329,1092,526,197,31,417,1149,981,964,1003,685,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,717,717,2,2},
|
||||
{1084,1174,1601,949,910,960,500,461,1290,23,1042,636,212,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1420,531,626,738,376,537,814,206,990,235,847,812,201,201,201,201,726,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1420,624,363,537,1436,278,292,377,263,820,376,382,382,2,654,655,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1091,793,1353,208,506,599,846,503,1011,247,289,61,1050,61,61,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1533,978,284,156,914,162,685,1184,252,1375,189,256,640,2,640,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1531,692,414,277,541,1371,1447,682,536,109,432,1240,1240,2,1022,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1128,398,791,1170,76,661,408,259,756,495,79,553,10,10,1532,1532,1532,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1040,704,618,854,374,1470,274,383,941,519,351,351,351,351,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1427,988,498,1529,99,678,1323,149,33,426,543,543,335,1507,772,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1102,349,490,266,144,220,599,437,743,764,647,1128,605,265,324,324,324,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1118,496,645,592,354,1133,935,428,72,532,182,182,1370,660,123,2,294,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1102,1042,315,745,1006,771,630,68,587,1187,295,295,295,408,408,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1118,724,1322,405,199,614,1087,885,1313,317,769,660,660,1158,535,2,2,2,373,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1120,772,743,488,346,126,784,584,943,153,311,133,133,969,605,605,2,2,2,2,2,2,2,605,2,2,2,2,2,2,2,2},
|
||||
{1404,284,176,590,1128,1371,322,543,1136,546,1315,174,174,777,777,891,2,2,2,2,2,2,2,579,579,579,579,2,2,2,2,2},
|
||||
{1441,791,233,141,141,316,89,296,462,1263,758,482,599,599,578,341,2,2,2,2,2,2,2,2,2,2,2,525,525,525,2,2},
|
||||
{1413,406,700,547,1166,250,518,543,104,331,205,205,691,691,2,2,118,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1485,400,1497,168,82,680,1103,554,249,702,493,101,296,236,2,236,236,944,944,2,2,394,2,2,2,2,2,2,2,2,2,2},
|
||||
{1127,869,558,533,1215,194,1762,784,593,777,1153,1079,1079,1079,2,2,2,330,1045,2,1045,1045,2,2,2,2,2,2,2,2,2,787},
|
||||
{1459,1243,467,533,266,1364,1031,890,1402,486,1678,1678,93,978,2,2,2,978,947,947,2,978,2,2,2,2,2,2,2,2,2,2},
|
||||
{1139,809,117,522,955,1096,1120,1470,116,184,1565,1565,557,557,2,2,2,2,2,829,1326,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1142,984,1044,590,340,241,662,357,366,1305,2,125,631,474,2,2,2,980,2,2,2,2,2,2,2,2,2,2,2,2,2,1273},
|
||||
{1469,1247,1277,616,209,486,106,552,219,217,471,272,272,1201,2,2,503,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1148,542,1478,496,950,464,1011,235,136,180,2,416,758,453,2,909,2,2,2,2,2,2,2,2,2,2,1019,1019,2,2,2,2},
|
||||
{1495,1178,874,415,1100,368,1057,1228,562,215,31,31,680,680,680,1208,2,2,2,2,2,2,2,2,1208,2,2,2,2,1208,1208,2},
|
||||
{1497,1166,1613,1403,107,803,993,539,1436,1289,2,240,334,634,532,1147,2,2,2,2,2,2,2,117,2,2,2,2,2,2,2,117},
|
||||
{1617,289,1033,169,355,260,30,45,721,906,88,44,44,418,417,218,2,2,846,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1628,721,400,239,728,1336,984,425,65,120,1232,463,463,640,349,616,616,2,2,2,2,2,2,2,2,147,147,2,2,2,2,2},
|
||||
{1628,286,541,530,1610,201,1220,1592,272,181,2,38,263,1586,1157,1157,1157,2,2,2,1157,1157,2,2,2,1157,2,2,2,2,1157,1157},
|
||||
{1531,621,210,755,482,82,1308,317,427,168,2,232,116,190,701,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,701},
|
||||
{1532,575,1245,360,249,630,133,1406,920,1539,63,63,76,82,82,2,2,2,770,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1102,785,118,93,1491,988,275,53,1328,26,2,2,240,647,240,761,761,761,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1478,722,113,1534,1751,115,1728,1234,777,282,508,508,1184,63,1184,855,855,2,2,2,738,738,578,578,2,2,2,2,2,2,2,2},
|
||||
{1480,536,1421,164,429,84,970,1673,548,497,2,2,530,156,156,128,245,2,2,2,2,260,2,2,2,2,2,2,2,2,2,2},
|
||||
{1533,1302,1286,538,619,526,1669,145,1034,125,2,1038,1038,388,388,387,729,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1482,961,1093,556,1746,628,427,689,510,751,684,37,37,1229,1256,882,1507,1507,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1472,852,533,433,924,57,53,1036,410,675,1212,1212,1212,600,600,1212,1259,1245,1245,1245,1245,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1228,425,1030,699,407,171,568,925,1104,97,2,2,1286,1286,1286,502,2,1219,1219,1219,1290,2,1219,1219,1219,1219,2,2,2,59,2,2},
|
||||
{1547,657,777,695,1254,224,933,367,212,385,2,2,2,1422,749,245,885,710,2,2,710,710,710,45,710,710,710,710,2,336,710,2},
|
||||
{1678,466,549,145,351,816,1041,334,192,192,2,2,348,1017,130,4,4,180,180,180,180,512,2,2,2,512,512,512,512,512,128,8},
|
||||
{1550,569,481,1041,1680,1114,1265,160,386,194,2,2,2,533,929,531,422,531,1355,1355,1355,1355,531,216,216,2,2,2,2,2,2,2},
|
||||
{1559,462,850,289,1570,71,512,858,810,835,2,2,2,2,1028,1205,1205,546,546,546,1205,1205,1205,1205,1205,2,1205,1205,1205,1205,1205,1205},
|
||||
{1192,888,701,164,131,613,282,237,525,366,2,2,2,2,1737,845,845,750,2,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,2,1261,1261},
|
||||
{1208,426,412,1072,274,248,1544,627,9,458,2,2,2,2,2,2,270,270,270,150,715,282,150,150,150,150,150,150,150,150,150,150},
|
||||
{1128,393,1522,96,160,581,540,120,441,176,2,2,2,2,2,2,1427,551,1102,1102,328,328,592,592,592,592,592,592,592,592,592,592},
|
||||
{1202,538,171,1177,1090,690,1566,746,1012,1012,2,2,2,2,313,781,808,313,1125,1117,930,1117,1117,1117,1117,1117,1117,1117,1117,2,2,2},
|
||||
{1567,1265,372,1633,613,484,243,1523,21,275,2,2,2,431,431,431,431,2,2,978,489,889,889,889,889,889,889,889,2,2,2,2},
|
||||
{1566,982,815,133,891,412,1179,831,651,268,2,2,2,367,366,367,367,63,63,767,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1522,1422,1017,124,499,451,731,1112,1355,1355,2,2,2,854,854,336,854,336,1297,2,2,2,193,193,193,193,193,2,2,2,2,2},
|
||||
{1160,1331,917,1696,401,547,122,592,863,863,2,2,703,703,703,703,495,495,495,2,2,495,495,495,495,495,269,2,2,2,269,269},
|
||||
{1538,814,1027,677,524,226,756,202,242,102,2,2,912,564,1289,682,2,1125,1125,1125,1125,2,1289,1289,1289,1125,1125,1125,2,1289,1289,1289},
|
||||
{1598,397,1471,1471,1162,866,236,948,1557,737,2,2,153,737,1408,765,765,608,2,2,2,171,608,608,608,608,2,608,608,2,2,2},
|
||||
{1598,434,107,270,148,1317,835,123,642,1236,2,2,67,633,771,878,771,878,878,2,2,2,771,2,2,2,2,2,2,2,2,2},
|
||||
{1628,1502,1042,822,80,403,1335,684,464,426,671,671,336,336,336,2,425,896,2,2,2,2,1337,1337,1337,1337,1337,1337,2,2,2,2},
|
||||
{1630,715,1368,1273,993,293,385,545,1267,896,1038,1038,270,1325,1325,2,2,961,961,961,961,961,961,2,2,961,961,2,2,961,2,961},
|
||||
{1612,723,409,641,796,1087,1228,1398,623,262,740,740,870,870,397,2,2,893,893,2,2,1367,328,2,328,2,2,2,2,2,2,2},
|
||||
{1614,588,652,105,441,844,734,912,532,878,1073,1073,62,1415,693,1431,1431,1431,1431,925,925,925,925,925,925,925,2,2,2,2,2,2},
|
||||
{1607,1503,1072,471,221,277,854,1236,263,752,2,694,1657,934,553,2,2,2,498,498,2,802,2,46,2,2,2,2,2,2,2,2},
|
||||
{1172,987,140,1964,584,600,852,1725,456,1199,718,718,791,981,791,2,2,2,2,2,1260,2,2,2,2,2,718,2,2,718,2,718},
|
||||
{1746,771,620,415,1057,437,613,1034,1662,837,2,1149,1466,1149,1149,1149,1466,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1263,835,1533,789,1259,174,1497,557,644,203,2,289,604,434,434,434,2,844,844,2,2,2,1111,1111,1111,2,2,2,2,2,2,2},
|
||||
{1272,884,388,1889,956,159,1172,595,219,645,2,629,107,107,1279,75,2,2,2,211,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1797,904,172,659,349,177,692,448,1141,990,640,99,1073,806,640,640,2,640,640,911,911,911,640,640,640,640,2,2,2,2,2,2},
|
||||
{1276,442,1008,1352,243,162,711,301,552,1002,668,668,384,71,384,384,2,2,2,2,2,727,727,727,777,777,777,777,777,777,2,777},
|
||||
{1600,1130,171,1113,813,722,117,990,37,24,969,94,825,1398,1398,1398,1398,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1198,496,714,609,644,1159,873,249,186,1539,136,239,379,1994,2,68,68,68,68,68,2,2,192,2,969,2,2,969,2,2,969,969},
|
||||
{1678,1316,460,1133,1003,150,1236,1316,1417,218,1763,1763,77,77,2,1491,771,771,771,771,771,2,771,2,2,2,2,2,2,2,2,2},
|
||||
{1682,449,1067,393,136,854,36,492,637,1053,247,1111,1111,1111,2,247,247,247,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1288,1690,702,760,420,333,1213,1911,805,351,67,67,1568,1568,2,2,604,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1288,1858,152,894,346,104,997,203,249,1006,1278,1489,1489,555,2,2,2,1074,1074,518,2,2,518,2,2,518,2,2,2,2,2,2},
|
||||
{1601,697,532,408,697,1140,1568,47,1499,780,1171,318,318,318,2,2,2,2,318,318,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1283,1078,791,873,655,412,389,835,292,958,1245,678,1611,1519,2,2,185,2,2,2,2,2,2,1245,1245,2,2,2,2,2,2,1245},
|
||||
{1685,1610,1447,1093,1255,937,703,431,522,1384,988,988,253,988,2,1892,1892,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1822,589,236,205,797,39,241,1048,181,386,102,102,102,111,1361,1361,1361,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1233,843,813,157,396,669,1531,439,640,733,996,996,996,1566,951,608,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1342,705,302,595,1200,52,83,647,519,139,103,103,103,513,2,513,2,2,2,2,2,513,2,2,2,2,2,2,2,2,2,2},
|
||||
{1630,1244,142,767,1299,719,629,1716,419,837,1145,1136,1148,1405,1405,1405,2,2,2,2,2,309,309,309,309,309,2,2,2,2,2,2},
|
||||
{1636,974,279,419,893,1608,1491,156,1486,115,730,730,863,509,924,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1318,1234,213,1089,1567,602,1330,404,467,718,249,215,354,177,59,332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1732,1771,584,533,297,1056,669,293,146,311,1176,311,590,590,277,2,2,2,2,2,2,2,2,2,539,539,2,2,2,2,2,2},
|
||||
{1026,512,1196,394,1259,1313,762,549,311,1576,1576,465,465,140,465,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1360,383,1470,502,1010,153,1588,619,1246,396,1107,1107,112,423,423,2,2,2,2,2,202,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1320,1636,858,1210,509,194,1575,154,1424,455,1860,832,1075,581,262,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1670,1350,689,1074,437,956,587,642,1154,439,196,1108,1108,1108,990,2,2,2,2,2,1112,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1873,890,920,874,591,651,768,478,331,76,760,760,760,760,67,2,2,2,2,1241,1241,1241,1241,2,2,2,2,2,2,2,1241,1241},
|
||||
{1682,867,333,102,628,891,654,506,995,684,961,563,1313,1313,1313,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1672,1248,429,813,262,92,809,1248,560,1365,1392,753,753,1259,1261,2,2,2,2,2,2,2,2,177,177,2,2,2,2,2,2,2},
|
||||
{1391,1598,1112,590,797,584,1354,47,1473,1291,1874,48,491,463,990,463,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1875,1576,924,677,461,134,1525,1619,44,701,299,743,728,791,791,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,791,791},
|
||||
{1267,904,1187,1595,765,1451,494,1573,950,909,87,1265,757,1371,1005,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1360,1091,1478,1237,97,578,1616,494,1422,223,865,1092,359,2,1080,4,2,2,2,688,1965,2,1965,2,2,2,2,2,2,2,2,2},
|
||||
{1750,386,393,840,723,791,1707,1319,1525,83,1302,571,280,2,280,73,2,2,2,1207,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1763,1018,1859,432,717,723,874,1294,1050,1800,1237,619,1074,2,10,1237,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1376,652,461,225,361,936,1073,1279,149,619,983,511,1994,2,2,1076,1076,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1947,393,495,946,1375,391,2128,582,1143,695,1872,760,760,2,2,1456,974,974,435,974,974,435,974,2,974,974,2,2,2,2,2,2},
|
||||
{1768,1463,531,1008,95,1677,362,1105,985,177,1682,1682,244,2,2,1234,1041,1041,1041,2,2,2,1041,1041,2,2,2,2,2,2,1894,2},
|
||||
{1780,1739,1357,1684,1586,736,208,966,1691,339,339,128,128,2,2,128,128,128,2,2,128,2,2,2,2,1929,2,2,338,2,2,338},
|
||||
{1387,1459,358,1409,1919,917,777,223,313,1847,1012,1024,1024,2,2,2,2,1420,1420,1428,1420,2,1420,1420,2,2,2,1420,1117,1117,1117,1117},
|
||||
{1289,907,228,665,1695,1735,489,214,762,1777,321,1674,932,2,2,2,2,1358,709,2,1959,1959,372,2,2,372,372,2,2,372,372,372},
|
||||
{1378,680,1117,1367,759,62,319,563,505,1138,1093,345,693,2,2,2,780,780,2,2,2,729,729,729,2,2,2,2,2,2,729,729},
|
||||
{1802,1645,453,1079,604,618,334,855,541,167,37,88,849,2,2,518,518,2,2,530,2,2,2,2,2,2,2,119,119,2,2,2},
|
||||
{1275,1612,143,1586,502,987,555,436,2236,1826,494,494,358,2,2,213,2,2,2,2,2,2,1585,1585,1585,1585,1585,1585,1585,1585,1585,1585},
|
||||
{1322,512,560,432,365,87,1835,1137,515,1271,1739,309,309,1229,1229,1229,2,2,2,2,2,2,2,2,416,416,416,416,2,2,2,2},
|
||||
{1758,835,287,888,391,875,1834,516,1432,1171,98,408,302,976,976,1963,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1444,394,1613,796,645,1406,186,158,402,1364,314,588,606,2,577,117,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1337,1391,137,371,165,87,1026,20,419,99,572,572,918,854,918,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1323,589,526,1555,1636,1172,86,42,1545,57,627,1769,1769,2,867,343,2,2,2,2,2,2,2,724,2,2,2,2,724,724,2,2},
|
||||
{1323,1647,384,301,270,549,1098,1144,1066,55,88,1805,683,2,945,120,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1327,1075,539,1017,926,350,1102,236,494,1268,286,286,1293,267,227,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1472,661,1538,487,94,2209,563,138,881,1735,718,203,1382,1473,1473,1473,1473,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1413,766,349,1471,45,625,733,1082,170,58,1268,207,1081,1081,1081,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1861,1487,419,97,799,1791,458,1029,370,627,57,414,414,1540,247,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1881,716,268,387,2138,1212,999,408,1363,434,1429,1429,1648,1648,1007,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1480,1131,1089,1688,340,962,505,1816,139,44,1350,403,1385,1996,173,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1868,650,1146,1690,948,43,497,692,1628,1302,1302,108,462,731,731,2,2,2,2,2,2,2,185,185,185,2,2,2,2,2,2,2},
|
||||
{2023,1204,531,733,1054,618,668,363,783,218,1302,2055,559,2055,2055,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1328,601,601,617,554,467,391,1545,162,1361,807,1565,1565,243,1344,2,725,510,510,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1808,1525,1129,652,1195,329,1410,558,1322,911,161,536,737,94,306,2,2,2,2,2,2,2,2,2,541,541,541,2,2,2,2,2},
|
||||
{1911,1338,639,1106,854,128,19,1353,847,253,618,517,2054,2054,93,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1825,850,180,1483,864,953,50,81,106,432,1372,1372,1212,10,10,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1892,441,977,228,1252,604,735,136,889,878,1319,1319,2127,2127,1963,367,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1820,1553,536,1351,425,1268,227,1742,429,348,1397,552,1151,1151,2,180,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1453,1044,556,833,305,1493,989,1158,726,1790,532,1229,1229,1229,2,2,2,2,2,2,2,2,2,2,259,2,2,2,2,2,420,2},
|
||||
{2059,592,492,973,137,1331,392,334,635,1480,2254,1796,1796,284,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1460,986,709,268,755,824,83,893,115,656,2071,1323,1001,144,2,2,2,2,2,2,2,2,1527,1527,1527,1527,1527,1527,1527,2,801,801},
|
||||
{1850,1476,792,840,2037,229,1578,526,431,1485,1450,1001,1001,1001,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1922,1383,813,346,1247,666,1931,1111,2042,79,682,501,1349,1930,2,2,681,681,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1922,542,1739,625,88,1376,259,49,338,318,505,788,1314,657,2,2,2,1314,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1948,1530,576,582,1069,119,2131,41,1178,1677,1677,1677,325,346,2,2,2,2,2,2,1401,2,33,2,2,2,2,2,2,71,71,71},
|
||||
{1928,1111,168,1252,1467,1083,1927,603,1278,714,1027,50,751,1970,2,2,2,2,621,2,100,2,2,10,10,2,2,2,2,793,793,793},
|
||||
{1394,896,674,2350,1375,1599,1858,135,762,722,628,685,705,28,2,2,2,2,2,2,2,2,2,2,2,855,2,2,2,2,2,2},
|
||||
{1540,791,518,419,1130,1068,299,1386,1378,134,859,859,71,162,2,71,71,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2107,709,828,154,542,184,1094,1665,307,1549,177,2007,85,773,2,2,2,2,2,2,2,2,2,2,2,697,2,2,2,2,697,2},
|
||||
{1977,1218,244,365,576,666,761,238,629,913,1907,986,1351,986,704,1257,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1496,1912,1291,1053,510,2322,1048,1530,2223,673,894,594,628,332,2,2,2,2,2,295,295,295,2,2,2,2,2,2,2,2,2,2},
|
||||
{1520,1107,1082,687,484,1732,676,1595,467,653,1091,428,2113,332,332,332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1905,612,920,848,562,2032,230,1305,1073,851,731,798,798,357,516,2,2,2,2,2,2,2,2,1465,1465,373,2,2,2,2,2,2},
|
||||
{1428,1062,1016,75,297,1130,533,768,464,753,48,1510,1510,418,375,1626,2,221,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1396,729,1710,337,371,489,1341,2117,132,1870,853,853,408,1079,328,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1978,1051,977,588,1423,1001,508,409,825,497,659,1063,384,463,463,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1534,854,2007,1207,947,1773,1571,1505,909,1471,1655,1655,2334,1327,409,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2157,2106,679,238,378,49,1101,588,811,1313,1556,2301,475,812,812,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2187,1515,549,1416,1073,1613,47,1046,390,252,1214,1404,1404,933,1013,2,2,2,1025,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2145,1069,662,709,737,1141,1737,827,1384,1628,107,107,1032,277,277,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2173,1379,155,393,1578,610,1911,899,697,58,185,597,597,1249,1369,2,2,2,2,1369,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1413,1589,1603,2268,520,333,1416,859,1619,867,1154,512,1291,413,413,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1600,1823,1698,1268,623,583,1932,1674,522,529,1862,1281,246,989,246,2,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1559,992,174,1313,612,1487,1487,461,702,37,1660,839,2,95,1628,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2066,1719,710,1294,2041,377,1005,690,132,756,1618,187,187,726,187,615,615,2,2,2,2,851,2,2,2,2,2,2,2,2,2,744},
|
||||
{2192,1029,310,1609,592,1542,265,117,2006,82,162,205,2,2009,2009,1201,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1570,1504,1414,1143,1999,1932,1015,1015,556,514,626,79,2,79,1795,1461,1461,2,2,2,2,2,2,2,1461,1461,1461,1461,1461,2,2,2},
|
||||
{1562,937,1964,934,1349,378,459,109,1676,1655,1339,1809,2,768,768,188,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1965,949,1057,1043,2256,1571,970,348,69,1324,1174,485,105,105,105,2172,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2044,1869,838,1424,1097,155,1142,230,1335,420,235,1510,2,431,425,622,2,2,2,2,2,625,2,2,2,625,625,2,2,2,2,2},
|
||||
{1976,1433,820,504,421,1007,388,1083,635,82,1524,750,2,2,870,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1990,1948,1138,1787,253,115,312,1912,341,1624,260,1783,1315,1315,790,790,790,790,790,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1993,585,327,1393,1013,1671,1758,1436,1989,1217,1109,1476,2,2,1042,756,1042,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2056,1062,1605,1943,680,445,113,857,650,1388,2016,1231,2,2,1292,1292,1292,2,1039,1039,1039,1039,1039,2,2,2,2,2,2,2,2,2},
|
||||
{2008,1773,416,1954,1314,742,1694,505,202,1747,785,375,2,2,2,477,1538,477,2,2,2,2,2,1309,1309,1309,1309,2,2,2,1309,2},
|
||||
{1658,1008,258,749,427,1071,2052,263,1047,2152,1602,1602,2,2,2,1311,669,669,2,1897,1897,1897,669,669,669,669,669,669,669,669,669,669},
|
||||
{2258,1887,1875,1021,863,604,543,1115,509,1243,312,213,2,2,2,2,335,770,770,2,1143,567,2,2,567,567,567,411,2,2,2,411},
|
||||
{2266,1872,991,1468,1168,939,907,833,624,701,386,1713,2,2,2,2,2,931,861,381,1299,2,861,2,2,2,861,861,861,861,861,2},
|
||||
{2273,1510,803,2278,842,1245,1389,230,822,1564,113,1276,2,2,2,2,1350,273,273,2,2,2,2,2,1281,1281,1281,2,2,1281,1281,1281},
|
||||
{2278,1028,548,373,190,1443,614,2386,1940,930,557,2069,2,2,2,558,112,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2108,776,1568,342,2215,1882,681,1292,1601,586,1481,618,1930,1930,1930,1930,2146,89,89,2,2,2,2,2,2,2,1171,2,2,2,2,2},
|
||||
{2139,2177,1652,392,715,605,778,632,472,1619,64,64,2,2,2,1747,859,2,2,2,2,2,216,216,216,216,1747,1747,1747,1747,1747,1747},
|
||||
{1492,448,271,135,1288,417,130,83,235,2313,482,746,2,2,746,609,611,611,611,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1628,846,1504,138,464,401,501,506,967,1027,1540,1035,2,1921,1539,1539,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1630,1677,1624,301,1038,909,887,374,411,143,1021,174,2,1393,19,634,2,2,2,2,2,2,2,873,2,2,873,873,2,2,2,2},
|
||||
{1654,1131,2054,994,2170,548,801,252,87,219,488,2239,2,1232,1839,1822,2,2,2,968,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2065,1520,1423,1797,899,1425,1801,776,2365,58,646,695,2,998,998,1342,2,2,2,2,2,2,2,2,2,2,2,2,1150,1150,2,2},
|
||||
{2304,1948,316,1063,237,607,1143,2575,1388,1022,127,251,2,438,1570,1570,1570,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2177,710,1912,617,809,1078,199,905,673,519,457,52,2,1348,1348,410,2,2,2,2,2,340,2,2,2,2,2,2,2,2,2,2},
|
||||
{2073,1543,1586,1296,2466,753,455,46,119,1694,2035,1592,206,206,206,2,2,2,2,2,2,2,2,1172,2,2,2,2,2,2,2,2},
|
||||
{2075,1056,874,2101,566,1790,1333,386,538,1560,2254,331,717,717,717,454,454,2,2,2,2,2,2,2,2,2,2,2,454,454,2,2},
|
||||
{1670,977,1540,553,855,1729,239,757,191,62,732,549,1092,1092,199,199,199,199,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2096,1155,2257,125,1986,245,1208,2146,2287,680,1413,73,467,1410,1410,2,2,2,2,2,133,133,133,2,2,2,2,2,2,2,2,2},
|
||||
{1538,1026,2157,1457,1784,2559,184,29,614,273,697,697,1922,697,697,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2106,856,1025,382,389,272,425,672,1021,216,601,292,510,510,876,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1662,608,2478,266,1330,505,40,2058,964,724,596,1221,1221,310,42,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1600,1338,196,1510,1371,1138,957,169,545,1176,1131,2460,1708,541,541,2,363,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1682,1008,737,444,822,999,2066,283,646,1860,1008,778,1178,1178,458,1743,2,2,2,2,2,2,2,2,2,2,2,2,2,1743,1743,1743},
|
||||
{2132,756,1097,166,202,411,640,717,514,1389,633,633,633,633,633,633,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2386,748,620,478,647,898,320,53,1115,190,60,1860,1860,802,802,2,2,2,2,1264,1346,1346,2,2,2,2,2,2,2,2,2,2},
|
||||
{2125,996,1081,124,1140,628,1668,1913,151,2495,523,430,260,708,2190,2190,2190,2,2,2,2,2,1660,2,2,497,497,497,497,497,497,2},
|
||||
{1602,1489,895,383,56,698,2081,1728,794,789,16,16,797,302,52,2,2,2,2,2,2,2,2,2,2,797,797,797,797,797,797,1808},
|
||||
{2210,606,901,547,131,1924,1852,1271,194,766,390,390,520,795,1429,1429,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1731,599,817,724,718,1038,1082,2503,1341,936,421,1802,1304,1304,1491,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1614,1058,847,689,749,1028,1047,1474,117,1369,1442,1442,1540,700,104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1733,679,2041,2420,326,934,1172,1431,193,370,1073,1073,1073,260,2,2,2,2,2,2,2,2,2,2,2,2,1193,2,2,2,2,2},
|
||||
{2168,1532,769,2570,1303,357,1793,1633,1226,1025,205,1218,1984,764,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2234,1706,356,581,532,933,1704,387,1345,1345,34,135,350,307,614,614,307,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1656,2093,354,310,306,1553,106,459,175,55,1482,958,254,254,2,356,356,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1654,1035,330,533,1446,953,499,142,1527,1748,265,1437,265,510,2,2,2,2,2,2,2,1835,1835,1835,1835,2,2,2,2,2,2,2},
|
||||
{1600,479,1457,246,2025,618,1612,2139,169,1492,1097,1327,2007,2007,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1744,447,845,2145,748,1555,1193,1312,916,1770,1294,546,794,323,2,2,2,2,2,1733,1733,2,2,1730,2,1733,1733,2,2,1733,551,551},
|
||||
{1766,1558,1901,1393,987,1859,815,1165,50,2065,88,88,1453,1453,2,2,2,995,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1615,1267,1242,1494,399,663,68,1209,1573,528,640,1200,248,640,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1678,592,1351,509,312,721,163,1597,1262,199,2643,1330,1661,992,2,2,719,2,2,2,2,2,2,2,2,2,2,2,2,2,1704,2},
|
||||
{2207,970,838,2043,1016,561,267,329,584,608,679,303,832,1613,959,959,959,1409,1409,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2217,352,447,914,1200,561,614,1616,509,2292,1114,1114,1229,52,1053,1053,1053,2,2,2,2,2,2,2,2,2,2,2,2,2,795,795},
|
||||
{2313,595,1593,1951,133,282,372,2396,1117,226,2104,267,374,267,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2312,1231,1604,997,652,1096,1070,320,481,662,911,1610,342,2527,606,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2245,1541,1828,783,615,428,1282,1892,848,1219,2465,314,314,314,2,2,2,2,2,2,2,2,2,2,2,2,1323,2,2,2,2,1323},
|
||||
{2522,1030,324,1264,628,1339,480,234,2351,1085,1979,2333,1339,1356,1356,2286,2,2,2,2,2,2,2,2,2,2,2,2,2530,2,2,2},
|
||||
{2519,1136,612,209,994,1179,1060,2621,130,485,661,1444,2122,124,258,1114,2,2,806,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2524,1894,253,2072,1242,355,888,1362,28,480,452,1216,595,545,354,1145,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2569,1356,1053,410,437,58,1508,831,2272,383,1725,615,1191,1191,1191,2493,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2386,1106,709,251,784,929,1551,2481,304,2148,1546,955,2453,866,866,2,2,2264,2264,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2228,1163,1995,649,1000,680,325,1591,774,767,711,711,1418,524,711,401,976,2,2,2,2,2005,2005,2,2,2,2,2,2,1390,1390,2},
|
||||
{2362,1706,564,1088,1296,1267,70,1015,496,1298,758,154,240,240,154,154,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1715,2260,357,557,783,1195,2288,1997,1120,144,247,175,1277,203,203,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2294,2360,1353,748,1439,226,940,2316,1112,1527,214,1406,1429,712,1124,2,595,595,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2303,1018,316,280,1616,909,97,1126,1295,736,216,54,2045,726,1673,2,2,2,2,2,779,779,2,2,2,2,2,2,2,2,2,2},
|
||||
{2390,491,1217,1148,2314,2250,2180,308,613,662,1346,1346,1346,1280,778,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1732,527,1303,664,71,294,404,917,1074,180,2618,2412,441,1987,1750,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1695,1287,1346,1181,1412,1653,830,2025,957,1720,1614,887,964,964,964,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1756,2308,1986,101,957,633,1940,1002,390,1237,95,1441,95,95,705,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2461,1412,540,1183,229,300,47,585,518,402,1863,1863,560,1326,1326,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1707,717,366,287,1883,50,599,1371,474,1551,947,2142,1885,947,2008,1004,1004,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2632,567,1149,1227,1156,2052,643,1585,1197,581,63,718,699,149,149,1940,2,2,2,2,2,2,2,2,2,2,2,2146,2,2,2,2},
|
||||
{1773,2024,377,340,1938,103,1180,600,199,848,2449,2449,506,506,762,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2435,1920,394,1482,266,1637,911,1697,1689,1249,1085,1085,397,2292,1355,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2345,662,270,324,1061,1080,1952,593,1480,2111,2667,2093,2059,2120,955,1447,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1777,455,1487,1190,455,1542,977,2308,437,1129,410,856,1420,412,412,766,2,2034,2034,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2662,2224,1142,656,59,598,730,458,226,1151,741,1286,1015,2,688,2017,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2666,768,529,990,2329,130,1678,2466,318,1083,387,1524,511,2,731,731,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2501,1216,246,1278,718,704,2019,88,273,1203,67,1488,1828,2,2,1489,1489,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2474,2292,1818,2061,2833,751,2172,1708,1210,1675,370,131,163,2,2,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1751,1575,889,828,82,1956,712,499,1420,1686,339,2326,2035,2,2,558,558,2,1234,2,2,2,2,2,2,2,2,2,2,2,1239,1239},
|
||||
{2522,1148,1943,168,218,252,543,1535,2004,130,353,353,42,2,2,2,1173,1173,2,1547,2,2,2,2,2,2,2,1547,1173,1547,1547,2},
|
||||
{2695,432,1213,579,865,1637,1857,84,447,155,2492,347,1980,2,2,2,1155,1155,1155,2,1933,1933,1933,2,2,2,2,2,2,2,1901,1901},
|
||||
{1808,1683,474,1761,106,602,1416,217,1351,1602,366,393,1966,2,2,2,2,2,378,378,606,606,606,2,2,2,2,2,919,919,919,919},
|
||||
{2428,1576,1692,449,2012,240,1167,418,272,1557,2197,645,645,2,2,2,2,2,2150,2150,2,2,562,715,2,2,2,81,81,2,2,2},
|
||||
{2727,781,1689,1709,997,2563,1032,468,44,992,1214,725,75,2,2,2,2,360,360,380,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1948,1085,1344,2090,1435,2389,3193,1007,1003,244,667,1838,2062,2,2,2,1802,299,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2433,932,689,818,2014,1498,749,1645,867,1627,47,1766,2193,2,2,2030,2030,2,430,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2463,712,1525,2092,2942,352,761,242,2178,2339,483,1905,1347,2,2,65,529,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2547,920,386,925,74,579,323,2319,520,2332,1535,751,1591,2,770,770,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2452,2588,2055,665,818,2622,413,1260,965,211,989,1219,166,2,1251,1251,2,1256,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1957,2311,993,276,293,2826,1087,880,927,1811,1122,2974,2974,2,2,590,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2552,998,533,827,1619,831,1861,918,750,1955,241,1899,448,2151,2151,449,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1860,579,1000,1575,898,170,185,1032,293,2754,438,459,459,2,1199,1199,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2602,2417,1888,2528,1410,669,1543,233,814,2478,225,1449,1449,224,1671,1671,2,2,931,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1889,2527,1366,1371,387,925,1751,162,250,1064,292,467,467,546,1244,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2492,1186,1350,1616,2749,1962,33,708,279,813,1390,489,1203,268,173,2410,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2500,1575,423,541,561,380,262,1564,1923,1242,2084,1758,1283,2213,924,924,2,2,2,2,2,2,2,2,2,2,2,1827,1827,2,2,2},
|
||||
{1842,1736,489,743,1539,1681,683,1412,1418,312,2778,2778,1975,1975,803,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2824,1183,2201,278,241,2230,1591,1648,1036,818,1321,1312,754,813,813,813,813,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1900,2506,952,1059,163,870,681,1235,1271,1188,2071,1705,1183,648,404,2,2,2,2,2,2,2,2,2236,2236,2,2,2,2,2,2,2},
|
||||
{2662,1443,2327,132,490,1149,1572,744,429,621,1763,2383,1903,1246,964,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2673,2182,1307,1776,1233,1828,1828,340,249,216,503,160,160,582,926,2129,2129,2129,2129,2129,2129,2129,2129,2129,2129,2129,2129,2,1018,1018,1103,1103},
|
||||
{2042,620,1074,2057,2758,859,815,1127,766,1693,252,808,981,416,416,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2102,881,2170,1673,705,101,58,1712,1568,214,758,488,1007,269,243,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2692,2665,961,1478,324,429,1311,376,1648,130,2083,1047,409,343,343,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2122,1087,563,1669,647,2996,151,2458,250,310,71,1348,355,965,2815,1333,1333,2,2,2,2,2218,2,2,2,2,2,2,2,2,2,2},
|
||||
{1952,1968,2260,2945,2464,1055,2626,570,1316,1828,1828,970,970,221,220,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2072,1947,1779,254,2822,1552,855,804,3452,202,695,82,684,208,1270,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1947,1699,1341,486,1765,1960,264,899,1082,1674,987,1878,930,1008,930,930,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1953,1527,1643,591,1517,2427,1232,1555,2542,495,675,2534,2534,3106,83,3106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2744,1728,2213,792,761,1667,1908,31,447,442,815,2865,762,762,762,762,2,2,2,2,2,2,2,2,2,2,2,2,649,649,649,2},
|
||||
{2722,1406,1257,807,2191,3017,1330,1023,602,2124,794,530,733,733,1083,2528,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{1963,1525,437,398,609,393,2420,3059,435,1251,1977,1672,450,1960,1954,1960,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2626,2468,2838,845,2060,218,1080,912,911,1973,1365,920,1316,1316,2,1316,1316,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2734,1727,1743,1026,809,1154,779,244,1238,1616,812,784,825,1810,1810,1810,1810,1559,1559,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2180,2262,1651,204,3193,2121,2725,1016,629,1834,603,2848,26,26,728,728,728,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2648,1328,2578,133,1377,105,2485,2139,323,1045,145,761,1201,1848,2,814,814,814,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2999,358,250,1379,102,2349,1491,2074,42,376,2811,1220,296,296,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2810,1274,499,742,1724,425,190,1561,1302,2603,2255,917,661,661,2,2,2,495,2,2,2,2,2,2,2,2,2,2575,2,2,2,2},
|
||||
{2150,589,876,1616,2655,432,902,1028,433,1375,574,1400,1400,1400,2,2,2,2,2,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529},
|
||||
{1665,1856,201,824,796,249,1217,590,1375,1175,1599,824,824,3319,2,2,2,601,1961,1961,2,2,2,1961,2,2,2,2,2,2,1961,2},
|
||||
{2704,2239,1260,140,2161,2781,1840,574,2353,343,3218,61,2108,2038,1873,2,1833,1408,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2173,876,802,2197,3338,176,1783,224,1763,1160,1264,1264,2864,554,2,552,552,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2708,1663,2279,824,836,1598,2101,1620,1202,1606,1368,1079,1167,1999,2848,2848,2848,1101,1101,1101,2,2,2,662,2,2,2,2272,2,2,2,2},
|
||||
{1987,1463,2328,1890,1443,2086,283,2895,522,1577,1514,1657,2605,891,2,1181,1181,2,2,2121,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2173,1637,1139,905,1802,1378,296,439,1507,1017,1427,209,708,462,1508,1508,1508,2,2,2,2,2,2,2,2,2,2,2240,2240,1459,1459,1459},
|
||||
{2206,1526,628,2877,802,2587,1253,1258,1044,2195,3246,40,2898,2898,1704,598,2,2145,2,2,2,2145,2,2,2,2,2,2,2,2,2,2},
|
||||
{2182,618,1022,1433,1138,1580,2590,149,796,2090,743,294,294,1117,720,3003,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2025,1805,1466,1213,2006,1903,568,1700,1355,865,1783,1006,1006,1070,1070,268,2,2,2,2,2388,2388,845,845,845,2,2,2,2,2,2,2},
|
||||
{2185,1038,3050,1461,2270,2159,958,1637,233,2483,525,987,437,437,437,3065,2,2,2160,2160,2,2,2,2,2,2,2,2,2,2,2160,2160},
|
||||
{2083,1465,847,1450,502,447,2168,794,1761,1324,162,188,2853,2853,636,973,2,563,2,2,2,2,2,2,2,2089,2089,2089,2089,2089,2,2},
|
||||
{2923,2303,203,508,472,648,3169,269,515,3147,2415,1700,1700,1700,1461,1461,1461,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2300,1116,1555,2794,1095,998,1999,894,963,753,324,2130,2675,2675,554,2045,2,2,2,2,2,2,2,2130,2130,2130,2,2,2,2,2,2},
|
||||
{2103,768,702,1548,1486,2228,2846,861,665,1497,1046,1046,2252,394,394,1901,1155,2,2,2,2,2,2,2,2,2,2,2,192,192,192,192},
|
||||
{2923,640,661,2179,1207,182,872,171,738,269,1372,222,908,2069,2069,2,1550,516,2,2,2,2,2,2,2,2,2,2,1109,2,2,2},
|
||||
{2833,2005,387,733,562,468,317,224,94,478,1606,2522,1606,2001,1087,2,2,1087,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2125,2479,1749,1226,1169,1681,459,652,1087,2211,1613,686,2213,1689,2446,2,2,2925,2925,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2953,1059,205,3093,138,132,2148,1345,1499,216,151,1296,2446,1610,1632,2,2,2,2,4,4,2,2,2,987,987,2,2,2,2,2,2},
|
||||
{3199,1431,593,2050,2785,507,1540,1103,1740,459,62,1766,1781,1121,1600,2,1600,1600,125,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2258,1714,415,373,1919,2605,693,827,1918,496,1479,1903,86,1083,415,2,2,38,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{3289,2032,329,2169,2323,1599,517,1704,1847,804,632,40,40,40,40,40,40,40,40,2,2,1600,2,2,1600,2,2,2,2,2,2,2},
|
||||
{2165,2725,2293,368,705,3063,494,103,12,1332,175,2331,3144,2165,1709,1709,2090,2,2,2,2,1363,1363,2,566,2,2,2,2,2,2,2},
|
||||
{2300,1070,2169,2540,734,1002,912,1386,2215,224,1285,880,2052,2052,1301,959,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{3267,1852,1037,648,611,1250,432,853,1467,179,715,2,2033,841,2607,2607,2607,2607,2,2,2,2,1874,1874,2,1874,899,2,2,2,2,2},
|
||||
{2348,2565,794,859,1740,1596,532,462,457,1014,1227,2,2761,954,249,249,2,458,458,2,2,2,2,2,909,909,2,2,2,2,2,2},
|
||||
{3038,2399,1450,1276,1222,727,552,646,1055,2351,686,63,252,504,3166,1802,2,2,1165,1165,1165,2,2,2,2,1165,1165,1165,2,2,1165,2},
|
||||
{3038,2519,1494,107,2597,802,535,1669,1695,1928,1940,1580,1580,85,2274,1551,2,2,2431,560,560,560,2,2,1098,2,2,2,2,2,2,2},
|
||||
{3040,1044,1927,1952,1479,3124,1373,1990,588,2550,1277,2,629,2671,1842,2712,840,1702,2,1669,2,1347,2,2,2,2,1669,1669,1669,1669,2,1669},
|
||||
{3056,1567,691,1243,653,751,248,842,1954,480,458,2,2,2451,934,3172,3556,2259,2312,2,2562,2562,2,2,2562,2562,2562,2562,2562,2,2,2},
|
||||
{2959,2553,1333,877,2492,3169,2498,686,2030,2820,3233,1313,1313,1471,1471,1471,1471,2,2,1471,1471,2,2,1481,2,1887,2,2,2,2,2,2},
|
||||
{3398,964,862,301,1705,2002,310,644,144,1091,1507,2,2,2460,496,496,2517,2517,1842,2,2,1964,2,2,2,2,2,1676,2,2,2,2},
|
||||
{2379,3034,166,302,2108,1078,2976,68,158,134,1567,2,2,1514,1514,1514,1883,1883,2,2,1883,1883,1883,1883,1883,1883,1883,1883,1883,2,2,2},
|
||||
{2386,1270,1204,1032,1474,224,496,2296,1536,1219,311,2,2,2,2,1238,2108,2108,2108,2108,2108,2108,2108,2108,1444,1444,1444,1444,1444,1444,1444,2},
|
||||
{2431,739,2488,1386,1632,2107,2602,2139,1751,349,3147,2,2,64,16,8,32,4,4,32,728,728,728,728,2,2,64,16,8,180,180,180},
|
||||
{3405,2142,1621,110,2112,2097,807,740,747,282,372,2,2,2,2,2493,2493,2493,1299,2,132,1872,2,1843,2,2,2,2,2,2,2,2},
|
||||
{3157,1230,685,1513,663,1335,2100,1441,1826,1670,1539,2,2,2,2899,2899,1378,54,2,46,46,2,2,1362,1362,2,2,2,2,2,2,2},
|
||||
{2415,822,3658,449,1980,891,129,823,1787,621,514,2668,2668,2668,2668,2668,666,269,2830,2,2,2,2,241,370,370,370,370,2,2,2,2},
|
||||
{2463,2664,2825,1208,882,629,428,428,356,343,1730,2,769,769,769,1714,769,2,2,955,769,2,2,955,955,955,2,2,2,955,955,955},
|
||||
{2447,1588,1077,831,1413,2362,1499,1812,1112,815,129,1034,1034,1867,194,518,1454,723,723,1251,2,160,2,2,1251,1251,2,2,2,2,2,2},
|
||||
{3094,1638,1514,843,1503,1884,1481,727,723,1319,226,2,676,2401,1699,562,639,639,1176,2,2,2,2,824,2,2,2,2,2,2,2,2},
|
||||
{3125,2004,547,2986,2919,471,948,1747,201,1862,802,2,1238,1277,1277,1277,2,2,1245,1245,1245,2,2,2743,1245,1245,2,2,2,2,2,2},
|
||||
{2582,2469,533,1726,1575,1505,2448,2031,1257,427,588,1633,202,3553,1938,672,195,195,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2378,636,1958,1628,1255,2285,2208,1626,719,2944,1086,1436,1436,1719,2111,655,2637,2637,2,2,2,2637,2637,2,2637,2637,2637,2637,2637,2,2637,2637},
|
||||
{2372,3079,2161,515,368,847,955,1257,1937,315,2666,1938,1723,1252,1252,362,362,2,2205,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2518,2060,1055,362,1455,1899,1105,1560,2237,2451,2080,181,2346,181,1829,1829,1829,2,2,1509,1509,1509,2,1509,2,2,2,2,2,2,2,2},
|
||||
{3580,1671,674,1838,814,1409,323,3021,1047,2579,2579,2968,2968,102,2656,2638,2638,4006,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{3194,1576,1084,859,2879,1600,953,1429,471,867,1105,1490,293,293,293,2,2,198,2619,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{3215,2004,3333,2271,3283,1660,2135,1696,1413,1362,834,253,253,253,3802,2,2,2,1881,690,690,2,2,2,1881,1881,1881,1881,1881,2,1881,1881},
|
||||
{3719,2441,2094,1665,1707,1827,1310,230,1635,143,386,1029,1070,1062,1062,2,1062,1062,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{3249,1309,1232,472,711,2557,1479,1027,145,489,1377,2928,2928,3522,3522,3522,968,415,415,2,2,2,2,1332,1332,1332,2,1332,2891,2,1332,2891},
|
||||
{2462,1962,257,2244,1966,1905,204,262,799,319,752,1696,971,971,3781,1426,1426,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{3434,3131,1399,3413,1533,281,3288,1242,810,135,2506,2506,1742,946,1015,1044,1044,1044,2,2,2,2,1044,1837,1837,1837,1837,1837,2,2,2,2},
|
||||
{2518,1200,631,596,1946,365,2960,413,592,3878,242,2714,2364,1402,1402,2322,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{3362,2012,1759,2002,1365,150,3120,471,1590,3246,1296,196,196,196,2984,2323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{3382,899,3140,2860,1155,1840,2822,355,1753,1856,1018,822,52,52,52,1102,1102,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2728,1334,274,1330,2674,2614,931,2250,883,1506,2193,1345,1089,500,2,219,390,2,2,2,2,2,2,2,390,2,2,2,2,2,2,2},
|
||||
{3911,3343,202,675,1733,71,166,176,1323,2864,899,2155,1108,2172,2,2,1829,2172,1107,2,2,2,2,1107,1107,1107,2,2,2,1107,2,2},
|
||||
{2757,3466,1411,1168,340,2760,1053,524,53,2090,1227,26,260,830,2,2,2,1139,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
|
||||
{2662,902,2371,1920,1097,1476,1008,1012,3556,468,3374,2560,591,1446,2,298,298,149,149,149,149,149,3135,3135,3135,3135,3135,2,2,2,2,2},
|
||||
{2861,1407,1848,245,2186,1209,164,2577,625,132,657,2333,2333,2213,2213,2213,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}
|
||||
};
|
2
src/external/libCuba/src/divonne/Makefile.am
vendored
2
src/external/libCuba/src/divonne/Makefile.am
vendored
@ -3,7 +3,7 @@
|
||||
c_sources = Divonne.c
|
||||
|
||||
AM_CPPFLAGS = -I. -I.. -I../common -DNOUNDERSCORE
|
||||
AM_CFLAGS = $(LOCAL_CUBA_LIB_CFLAGS)
|
||||
AM_CFLAGS = $(LOCAL_CUBA_LIB_CFLAGS) "-Dcubafun_=libDivonnecubafun_"
|
||||
AM_LDFLAGS = $(LOCAL_LIB_LDFLAGS)
|
||||
|
||||
noinst_LTLIBRARIES = libdivonne.la
|
||||
|
125
src/external/libCuba/src/divonne/Rule.c
vendored
125
src/external/libCuba/src/divonne/Rule.c
vendored
@ -4,14 +4,10 @@
|
||||
code lifted with minor modifications from DCUHRE
|
||||
by J. Berntsen, T. Espelid, and A. Genz
|
||||
this file is part of Divonne
|
||||
last modified 26 Jul 13 th
|
||||
last modified 7 May 15 th
|
||||
*/
|
||||
|
||||
|
||||
#define NextSet(p) p = (Set *)((char *)p + setsize)
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
static void Rule13Alloc(This *t)
|
||||
{
|
||||
static creal w[][nrules] = {
|
||||
@ -153,7 +149,7 @@ static void Rule13Alloc(This *t)
|
||||
-s->weight[r + 1]/s->weight[r];
|
||||
real sum = 0;
|
||||
for( x = first; x <= last; NextSet(x) )
|
||||
sum += x->n*fabs(x->weight[r + 1] + scale*x->weight[r]);
|
||||
sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]);
|
||||
s->scale[r] = scale;
|
||||
s->norm[r] = 1/sum;
|
||||
}
|
||||
@ -298,7 +294,7 @@ static void Rule11Alloc(This *t)
|
||||
-s->weight[r + 1]/s->weight[r];
|
||||
real sum = 0;
|
||||
for( x = first; x <= last; NextSet(x) )
|
||||
sum += x->n*fabs(x->weight[r + 1] + scale*x->weight[r]);
|
||||
sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]);
|
||||
s->scale[r] = scale;
|
||||
s->norm[r] = 1/sum;
|
||||
}
|
||||
@ -309,32 +305,55 @@ static void Rule11Alloc(This *t)
|
||||
static void Rule9Alloc(This *t)
|
||||
{
|
||||
static creal w[] = {
|
||||
-.0023611709677855117884, .11415390023857325268,
|
||||
-.63833920076702389094, .74849988504685208004,
|
||||
-.0014324017033399125142, .057471507864489725949,
|
||||
-.14225104571434243234, -.062875028738286979989,
|
||||
.254591133248959089, -1.207328566678236261,
|
||||
.89567365764160676508, -.36479356986049146661,
|
||||
.0035417564516782676826, -.072609367395893679605,
|
||||
.10557491625218991012, .0021486025550098687713,
|
||||
-.032268563892953949998, .010636783990231217481,
|
||||
.014689102496143490175, .51134708346467591431,
|
||||
.45976448120806344646, .18239678493024573331,
|
||||
-.04508628929435784076, .21415883524352793401,
|
||||
-.027351546526545644722, .054941067048711234101,
|
||||
.11937596202570775297, .65089519391920250593,
|
||||
.14744939829434460168, .057693384490973483573,
|
||||
.034999626602143583822, -1.3868627719278281436,
|
||||
-.2386668732575008879, .015532417276607053264,
|
||||
.0035328099607090870236, .09231719987444221619,
|
||||
.02254314464717892038, .013675773263272822361,
|
||||
-.32544759695960125297, .0017708782258391338413,
|
||||
.0010743012775049343856, .25150011495314791996 };
|
||||
RC(-.002361170967785511788400941242259231309691),
|
||||
RC(.1141539002385732526821323741697655347686),
|
||||
RC(-.6383392007670238909386026193674701393074),
|
||||
RC(.7484998850468520800423030047583803945205),
|
||||
RC(-.001432401703339912514196154599769007103671),
|
||||
RC(.05747150786448972594860897296200006759892),
|
||||
RC(-.1422510457143424323449521620935950679394),
|
||||
RC(-.06287502873828697998942424881040490136987),
|
||||
RC(.2545911332489590890011611142429070613156),
|
||||
RC(-1.207328566678236261002219995185143356737),
|
||||
RC(.8956736576416067650809467826488567200939),
|
||||
RC(-.3647935698604914666100134551377381205297),
|
||||
RC(.003541756451678267682601411863388846964536),
|
||||
RC(-.07260936739589367960492815865074633743652),
|
||||
RC(.1055749162521899101218622863269817454540),
|
||||
RC(.002148602555009868771294231899653510655506),
|
||||
RC(-.03226856389295394999786630399875134318006),
|
||||
RC(.01063678399023121748083624225818915724455),
|
||||
RC(.01468910249614349017540783437728097691502),
|
||||
RC(.5113470834646759143109387357149329909126),
|
||||
RC(.4597644812080634464633352781605214342691),
|
||||
RC(.1823967849302457333050067275688690602649),
|
||||
RC(-.04508628929435784075980562738240804429658),
|
||||
RC(.2141588352435279340097929526588394300172),
|
||||
RC(-.02735154652654564472203690086290223507436),
|
||||
RC(.05494106704871123410060080562462135546101),
|
||||
RC(.1193759620257077529708962121565290178730),
|
||||
RC(.6508951939192025059314756320878023215278),
|
||||
RC(.1474493982943446016775696826942585013243),
|
||||
RC(.05769338449097348357291272840392627722165),
|
||||
RC(.03499962660214358382244159694487155861542),
|
||||
RC(-1.386862771927828143599782668709014266770),
|
||||
RC(-.2386668732575008878964134721962088068396),
|
||||
RC(.01553241727660705326386197156586357005224),
|
||||
RC(.003532809960709087023561817517751309380604),
|
||||
RC(.09231719987444221619017126187763868745587),
|
||||
RC(.02254314464717892037990281369120402214829),
|
||||
RC(.01367577326327282236101845043145111753718),
|
||||
RC(-.3254475969596012529657378160439011607639),
|
||||
RC(.001770878225839133841300705931694423482268),
|
||||
RC(.001074301277504934385647115949826755327753),
|
||||
RC(.2515001149531479199576969952416196054795) };
|
||||
|
||||
static creal g[] = {
|
||||
.47795365790226950619, .20302858736911986780,
|
||||
.44762735462617812882, .125,
|
||||
.34303789878087814570 };
|
||||
RC(.4779536579022695061928604197171830064732),
|
||||
RC(.2030285873691198677998034402373279133258),
|
||||
RC(.4476273546261781288207704806530998539285),
|
||||
RC(.125),
|
||||
RC(.3430378987808781457001426145164678603407) };
|
||||
|
||||
enum { nsets = 9 };
|
||||
|
||||
@ -440,7 +459,7 @@ static void Rule9Alloc(This *t)
|
||||
-s->weight[r + 1]/s->weight[r];
|
||||
real sum = 0;
|
||||
for( x = first; x <= last; NextSet(x) )
|
||||
sum += x->n*fabs(x->weight[r + 1] + scale*x->weight[r]);
|
||||
sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]);
|
||||
s->scale[r] = scale;
|
||||
s->norm[r] = 1/sum;
|
||||
}
|
||||
@ -451,21 +470,33 @@ static void Rule9Alloc(This *t)
|
||||
static void Rule7Alloc(This *t)
|
||||
{
|
||||
static creal w[] = {
|
||||
.019417866674748388428, -.40385257701150182546,
|
||||
.64485668767465982223, .01177982690775806141,
|
||||
-.18041318740733609012, -.088785828081335044443,
|
||||
.056328645808285941374, -.0097089333373741942142,
|
||||
-.99129176779582358138, -.17757165616267008889,
|
||||
.12359398032043233572, .074978148702033690681,
|
||||
.55489147051423559776, .088041241522692771226,
|
||||
.021118358455513385083, -.0099302203239653333087,
|
||||
-.064100053285010904179, .030381729038221007659,
|
||||
.0058899134538790307051, -.0048544666686870971071,
|
||||
.35514331232534017777 };
|
||||
RC(.01941786667474838842844534313920462333850),
|
||||
RC(-.4038525770115018254611834753723880293161),
|
||||
RC(.6448566876746598222277360730193089551024),
|
||||
RC(.01177982690775806141012214458820955067854),
|
||||
RC(-.1804131874073360901182293138710989490609),
|
||||
RC(-.08878582808133504444306598174517276122439),
|
||||
RC(.05632864580828594137378124255408286479947),
|
||||
RC(-.009708933337374194214222671569602311669249),
|
||||
RC(-.9912917677958235813775106862002319060386),
|
||||
RC(-.1775716561626700888861319634903455224488),
|
||||
RC(.1235939803204323357183625846672135876752),
|
||||
RC(.07497814870203369068087999555157339703666),
|
||||
RC(.5548914705142355977605994477355651401434),
|
||||
RC(.08804124152269277122645182458858273865209),
|
||||
RC(.02111835845551338508329573367808085283304),
|
||||
RC(-.009930220323965333308685820460105538586058),
|
||||
RC(-.06410005328501090417895544042025034295870),
|
||||
RC(.03038172903822100765927778829870429682489),
|
||||
RC(.005889913453879030705061072294104775339268),
|
||||
RC(-.004854466668687097107111335784801155834624),
|
||||
RC(.3551433123253401777722639269806910448976) };
|
||||
|
||||
static creal g[] = {
|
||||
.47795365790226950619, .20302858736911986780,
|
||||
.375, .34303789878087814570 };
|
||||
RC(.4779536579022695061928604197171830064732),
|
||||
RC(.2030285873691198677998034402373279133258),
|
||||
RC(.375),
|
||||
RC(.3430378987808781457001426145164678603407) };
|
||||
|
||||
enum { nsets = 6 };
|
||||
|
||||
@ -541,7 +572,7 @@ static void Rule7Alloc(This *t)
|
||||
-s->weight[r + 1]/s->weight[r];
|
||||
real sum = 0;
|
||||
for( x = first; x <= last; NextSet(x) )
|
||||
sum += x->n*fabs(x->weight[r + 1] + scale*x->weight[r]);
|
||||
sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]);
|
||||
s->scale[r] = scale;
|
||||
s->norm[r] = 1/sum;
|
||||
}
|
||||
@ -666,7 +697,7 @@ static void SampleRule(This *t, ccount iregion)
|
||||
real maxerr = 0;
|
||||
for( s = first; s <= last; NextSet(s) )
|
||||
maxerr = Max(maxerr,
|
||||
fabs(sum[rul + 1] + s->scale[rul]*sum[rul])*s->norm[rul]);
|
||||
fabsx(sum[rul + 1] + s->scale[rul]*sum[rul])*s->norm[rul]);
|
||||
sum[rul] = maxerr;
|
||||
}
|
||||
|
||||
|
19
src/external/libCuba/src/divonne/Sample.c
vendored
19
src/external/libCuba/src/divonne/Sample.c
vendored
@ -2,14 +2,16 @@
|
||||
Sample.c
|
||||
most of what is related to sampling
|
||||
this file is part of Divonne
|
||||
last modified 30 Aug 13 th
|
||||
last modified 12 Mar 15 th
|
||||
*/
|
||||
|
||||
|
||||
#define MARKMASK 0xfffffff
|
||||
#define MARKMASK NUMBER_MAX
|
||||
#define Marked(x) ((x) & ~MARKMASK)
|
||||
#define Unmark(x) ((x) & MARKMASK)
|
||||
|
||||
#define NWANTMAX NUMBER_MAX
|
||||
|
||||
#define EXTRAPOLATE_EPS (.25*t->border.lower)
|
||||
/*#define EXTRAPOLATE_EPS 0x1p-26*/
|
||||
|
||||
@ -96,7 +98,7 @@ static void SampleKorobov(This *t, ccount iregion)
|
||||
}
|
||||
|
||||
if( dist > 0 ) {
|
||||
dist = sqrt(dist)/EXTRAPOLATE_EPS;
|
||||
dist = sqrtx(dist)/EXTRAPOLATE_EPS;
|
||||
for( dim = 0; dim < t->ndim; ++dim ) {
|
||||
real x2 = x[dim], dx = x2 - t->border.upper;
|
||||
if( dx > 0 ) {
|
||||
@ -148,7 +150,7 @@ static void SampleKorobov(This *t, ccount iregion)
|
||||
1..39 = multiplicator, Korobov numbers,
|
||||
40..inf = absolute # of points, Korobov numbers. */
|
||||
|
||||
static count SamplesLookup(This *t, Samples *samples, cint key,
|
||||
static number SamplesLookup(This *t, Samples *samples, cint key,
|
||||
cnumber nwant, cnumber nmax, number nmin)
|
||||
{
|
||||
number n;
|
||||
@ -191,7 +193,8 @@ static count SamplesLookup(This *t, Samples *samples, cint key,
|
||||
static void SamplesAlloc(cThis *t, Samples *samples)
|
||||
{
|
||||
#define FIRST -INT_MAX
|
||||
#define MarkLast(x) (x | Marked(INT_MAX))
|
||||
#define MarkLast(x) ((x) | 0x40000000)
|
||||
#define UnmarkLast(x) ((x) & 0x3fffffff)
|
||||
|
||||
#include "KorobovCoeff.c"
|
||||
|
||||
@ -205,12 +208,12 @@ static void SamplesAlloc(cThis *t, Samples *samples)
|
||||
|
||||
while( i = IMin(IDim(i), max),
|
||||
n > (p = prime[i + 1]) || n <= prime[i] ) {
|
||||
cint d = (n - Unmark(p)) >> ++shift;
|
||||
cint d = (n - UnmarkLast(p)) >> ++shift;
|
||||
i += Min1(d);
|
||||
}
|
||||
|
||||
samples->coeff = coeff[i][t->ndim - KOROBOV_MINDIM];
|
||||
samples->neff = p = Unmark(p);
|
||||
samples->neff = p = UnmarkLast(p);
|
||||
samples->n = p/2 + 1;
|
||||
}
|
||||
|
||||
@ -240,7 +243,7 @@ static real Sample(This *t, creal *x0)
|
||||
}
|
||||
|
||||
if( dist > 0 ) {
|
||||
dist = sqrt(dist)/EXTRAPOLATE_EPS;
|
||||
dist = sqrtx(dist)/EXTRAPOLATE_EPS;
|
||||
for( dim = 0; dim < t->ndim; ++dim ) {
|
||||
real x2 = xtmp[dim], dx, b;
|
||||
if( (dx = x2 - (b = t->border.lower)) < 0 ||
|
||||
|
20
src/external/libCuba/src/divonne/Split.c
vendored
20
src/external/libCuba/src/divonne/Split.c
vendored
@ -2,7 +2,7 @@
|
||||
Split.c
|
||||
determine optimal cuts for splitting a region
|
||||
this file is part of Divonne
|
||||
last modified 31 Aug 13 th
|
||||
last modified 12 Mar 15 th
|
||||
*/
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ typedef struct {
|
||||
|
||||
static inline real Div(creal a, creal b)
|
||||
{
|
||||
return (b != 0 /*&& fabs(a) > SMALL*fabs(b)*/) ? a/b : a;
|
||||
return (b != 0 /*&& fabsx(a) > SMALL*fabsx(b)*/) ? a/b : a;
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
@ -58,7 +58,7 @@ static void SomeCut(This *t, Cut *cut, Bounds *b)
|
||||
yupper = Sample(t, xmid);
|
||||
xmid[dim] = x;
|
||||
|
||||
dev = fabs(ymid - .5*(ylower + yupper));
|
||||
dev = fabsx(ymid - .5*(ylower + yupper));
|
||||
if( dev >= maxdev ) {
|
||||
maxdev = dev;
|
||||
maxdim = dim;
|
||||
@ -178,7 +178,7 @@ static count FindCuts(This *t, Cut *cut, Bounds *bounds, creal vol,
|
||||
|
||||
for( icut = 0; icut < ncuts; ++icut ) {
|
||||
Cut *c = &cut[icut];
|
||||
creal diff = fabs(fmajor - c->f);
|
||||
creal diff = fabsx(fmajor - c->f);
|
||||
if( diff <= mindiff ) {
|
||||
mindiff = diff;
|
||||
mincut = c;
|
||||
@ -230,18 +230,18 @@ repeat:
|
||||
if( lhssqnew <= lhssq ) {
|
||||
real fmax;
|
||||
|
||||
if( fabs(gammanew - gamma) < GAMMATOL*gamma ) break;
|
||||
if( fabsx(gammanew - gamma) < GAMMATOL*gamma ) break;
|
||||
gamma = gammanew;
|
||||
|
||||
fmax = fabs(fgamma);
|
||||
fmax = fabsx(fgamma);
|
||||
for( icut = 0; icut < ncuts; ++icut ) {
|
||||
Cut *c = &cut[icut];
|
||||
creal dfmin = SINGTOL*c->df;
|
||||
creal sol = c->sol/div;
|
||||
real df = c->f - c->fold;
|
||||
df = (fabs(df) > SMALL*fabs(sol)) ? df/sol : 1;
|
||||
c->df = (fabs(df) < fabs(dfmin)) ? dfmin : df;
|
||||
fmax = Max(fmax, fabs(c->f));
|
||||
df = (fabsx(df) > SMALL*fabsx(sol)) ? df/sol : 1;
|
||||
c->df = (fabsx(df) < fabsx(dfmin)) ? dfmin : df;
|
||||
fmax = Max(fmax, fabsx(c->f));
|
||||
c->fold = c->f;
|
||||
}
|
||||
|
||||
@ -276,7 +276,7 @@ static void Split(This *t, ccount iregion)
|
||||
t->selectedcomp = region->cutcomp;
|
||||
t->neval_cut -= t->neval;
|
||||
ncuts = FindCuts(t, cut, region->bounds, region->vol,
|
||||
(real *)RegionResult(region) + region->xmajor, region->fmajor,
|
||||
RegionMinMax(region) + region->xmajor, region->fmajor,
|
||||
region->fmajor - region->fminor);
|
||||
t->neval_cut += t->neval;
|
||||
|
||||
|
24
src/external/libCuba/src/divonne/decl.h
vendored
24
src/external/libCuba/src/divonne/decl.h
vendored
@ -2,7 +2,7 @@
|
||||
decl.h
|
||||
Type declarations
|
||||
this file is part of Divonne
|
||||
last modified 26 Jul 13 th
|
||||
last modified 9 Oct 14 th
|
||||
*/
|
||||
|
||||
|
||||
@ -44,6 +44,8 @@ typedef struct {
|
||||
|
||||
#define SetSize (sizeof(Set) + t->ndim*sizeof(real))
|
||||
|
||||
#define NextSet(p) p = (Set *)((char *)p + setsize)
|
||||
|
||||
typedef struct {
|
||||
Set *first, *last;
|
||||
real errcoeff[3];
|
||||
@ -71,12 +73,11 @@ typedef const Errors cErrors;
|
||||
typedef struct {
|
||||
real avg, err, spread, chisq;
|
||||
real fmin, fmax;
|
||||
real xminmax[];
|
||||
} Result;
|
||||
|
||||
typedef const Result cResult;
|
||||
|
||||
#define ResultSize (sizeof(Result) + t->ndim*2*sizeof(real))
|
||||
#define MinMaxSize (t->ncomp*t->ndim*2*sizeof(real))
|
||||
|
||||
typedef struct region {
|
||||
int depth, next;
|
||||
@ -85,29 +86,34 @@ typedef struct region {
|
||||
Bounds bounds[];
|
||||
} Region;
|
||||
|
||||
#define RegionSize (sizeof(Region) + t->ndim*sizeof(Bounds) + t->ncomp*ResultSize)
|
||||
#define RegionSize (sizeof(Region) + t->ndim*sizeof(Bounds) + t->ncomp*sizeof(Result) + MinMaxSize)
|
||||
|
||||
#define RegionResult(r) ((Result *)(r->bounds + t->ndim))
|
||||
|
||||
#define RegionMinMax(r) ((real *)(RegionResult(r) + t->ncomp))
|
||||
|
||||
#define RegionPtr(n) ((Region *)((char *)t->region + (n)*regionsize))
|
||||
|
||||
|
||||
typedef int (*Integrand)(ccount *, creal *, ccount *, real *, void *, cint *);
|
||||
typedef int (*Integrand)(ccount *, creal *, ccount *, real *,
|
||||
void *, cnumber *, cint *, cint *);
|
||||
|
||||
typedef void (*PeakFinder)(ccount *, cBounds *, number *, real *);
|
||||
typedef void (*PeakFinder)(ccount *, cBounds *, number *, real *, void *);
|
||||
|
||||
typedef struct _this {
|
||||
count ndim, ncomp;
|
||||
#ifndef MLVERSION
|
||||
Integrand integrand;
|
||||
void *userdata;
|
||||
PeakFinder peakfinder;
|
||||
number nvec;
|
||||
#ifdef HAVE_FORK
|
||||
int ncores, running, *child;
|
||||
SHM_ONLY(int shmid;)
|
||||
Spin *spin;
|
||||
real *frame;
|
||||
number nframe;
|
||||
SHM_ONLY(int shmid;)
|
||||
int running;
|
||||
#endif
|
||||
PeakFinder peakfinder;
|
||||
#endif
|
||||
real epsrel, epsabs;
|
||||
int flags, seed;
|
||||
|
29
src/external/libCuba/src/suave/CMakeLists.txt
vendored
Normal file
29
src/external/libCuba/src/suave/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
#--- suave --------------------------------------------------------------------
|
||||
|
||||
#--- obj lib creation ---------------------------------------------------------
|
||||
add_library(suave OBJECT
|
||||
Suave.c
|
||||
)
|
||||
|
||||
#--- make sure that the include directory is found ----------------------------
|
||||
target_include_directories(
|
||||
suave BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../common>
|
||||
)
|
||||
|
||||
#--- check for pre compile flags ----------------------------------------------
|
||||
set(COMP_DEF "-DHAVE_CONFIG_H")
|
||||
set(COMP_DEF ${COMP_DEF} "-DNOUNDERSCORE")
|
||||
set(COMP_DEF ${COMP_DEF} "-Dcubafun_=libSuavecubafun_")
|
||||
|
||||
target_compile_definitions(
|
||||
suave PRIVATE ${COMP_DEF}
|
||||
)
|
||||
|
||||
#--- set compiler options -----------------------------------------------------
|
||||
target_compile_options(
|
||||
suave PRIVATE -fPIC
|
||||
)
|
48
src/external/libCuba/src/suave/Fluct.c
vendored
48
src/external/libCuba/src/suave/Fluct.c
vendored
@ -2,35 +2,43 @@
|
||||
Fluct.c
|
||||
compute the fluctuation in the left and right half
|
||||
this file is part of Suave
|
||||
last modified 29 Jul 13 th
|
||||
last modified 14 Mar 15 th
|
||||
*/
|
||||
|
||||
|
||||
#if defined(HAVE_LONG_DOUBLE) && defined(HAVE_POWL)
|
||||
#if defined(HAVE_LONG_DOUBLE) && defined(HAVE_POWL) && REALSIZE <= 10
|
||||
|
||||
typedef long double realx;
|
||||
#define XDBL_MAX_EXP LDBL_MAX_EXP
|
||||
#define XDBL_MAX LDBL_MAX
|
||||
#define powx powl
|
||||
#define ldexpx ldexpl
|
||||
typedef long double realL;
|
||||
#define REALL_MAX_EXP LDBL_MAX_EXP
|
||||
#define REALL_MAX LDBL_MAX
|
||||
#define powL powl
|
||||
#define ldexpL ldexpl
|
||||
|
||||
#else
|
||||
|
||||
typedef double realx;
|
||||
#define XDBL_MAX_EXP DBL_MAX_EXP
|
||||
#define XDBL_MAX DBL_MAX
|
||||
#define powx pow
|
||||
#define ldexpx ldexp
|
||||
typedef real realL;
|
||||
#define REALL_MAX_EXP REAL_MAX_EXP
|
||||
#define REALL_MAX REAL_MAX
|
||||
#define powL powx
|
||||
#define ldexpL ldexpx
|
||||
|
||||
#endif
|
||||
|
||||
typedef const realx crealx;
|
||||
typedef const realL crealL;
|
||||
|
||||
typedef struct {
|
||||
realx fluct;
|
||||
realL fluct;
|
||||
number n;
|
||||
} Var;
|
||||
|
||||
static inline realL MinL(crealL a, crealL b) {
|
||||
return (a < b) ? a : b;
|
||||
}
|
||||
|
||||
static inline realL MaxL(crealL a, crealL b) {
|
||||
return (a > b) ? a : b;
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
static void Fluct(cThis *t, Var *var,
|
||||
@ -41,27 +49,27 @@ static void Fluct(cThis *t, Var *var,
|
||||
count nvar = 2*t->ndim;
|
||||
creal norm = 1/(err*Max(fabs(avg), err));
|
||||
creal flat = 2/3./t->flatness;
|
||||
crealx max = ldexpx(1., (int)((XDBL_MAX_EXP - 2)/t->flatness));
|
||||
crealL max = ldexpL(1., (int)((REALL_MAX_EXP - 2)/t->flatness));
|
||||
|
||||
Clear(var, nvar);
|
||||
|
||||
while( n-- ) {
|
||||
count dim;
|
||||
crealx arg = 1 + fabs(*w++)*Sq(*f - avg)*norm;
|
||||
crealx ft = powx(arg < max ? arg : max, t->flatness);
|
||||
crealL arg = 1 + fabs(*w++)*Sq(*f - avg)*norm;
|
||||
crealL ft = powL(MinL(arg, max), t->flatness);
|
||||
|
||||
f += t->ncomp;
|
||||
|
||||
for( dim = 0; dim < t->ndim; ++dim ) {
|
||||
Var *v = &var[2*dim + (*x++ >= .5*(b[dim].lower + b[dim].upper))];
|
||||
crealx f = v->fluct + ft;
|
||||
v->fluct = (f > XDBL_MAX/2) ? XDBL_MAX/2 : f;
|
||||
crealL f = v->fluct + ft;
|
||||
v->fluct = MaxL(f, REALL_MAX/2);
|
||||
++v->n;
|
||||
}
|
||||
}
|
||||
|
||||
while( nvar-- ) {
|
||||
var->fluct = powx(var->fluct, flat);
|
||||
var->fluct = powL(var->fluct, flat);
|
||||
++var;
|
||||
}
|
||||
}
|
||||
|
4
src/external/libCuba/src/suave/Grid.c
vendored
4
src/external/libCuba/src/suave/Grid.c
vendored
@ -2,7 +2,7 @@
|
||||
Grid.c
|
||||
utility functions for the Vegas grid
|
||||
this file is part of Suave
|
||||
last modified 7 Aug 13 th
|
||||
last modified 12 Mar 15 th
|
||||
*/
|
||||
|
||||
|
||||
@ -33,7 +33,7 @@ static void RefineGrid(cThis *t, Grid grid, Grid margsum)
|
||||
real impfun = 0;
|
||||
if( margsum[bin] > 0 ) {
|
||||
creal r = margsum[bin]*norm;
|
||||
avgperbin += impfun = pow((r - 1)/log(r), 1.5);
|
||||
avgperbin += impfun = powx((r - 1)/log(r), 1.5);
|
||||
}
|
||||
imp[bin] = impfun;
|
||||
}
|
||||
|
45
src/external/libCuba/src/suave/Integrate.c
vendored
45
src/external/libCuba/src/suave/Integrate.c
vendored
@ -3,7 +3,7 @@
|
||||
integrate over the unit hypercube
|
||||
this file is part of Suave
|
||||
checkpointing by B. Chokoufe
|
||||
last modified 5 Aug 13 th
|
||||
last modified 13 Mar 15 th
|
||||
*/
|
||||
|
||||
|
||||
@ -26,22 +26,27 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
Result *tot, *Tot = state->totals + t->ncomp;
|
||||
Result *res, *resL, *resR;
|
||||
Bounds *b, *B;
|
||||
cnumber minsamples = IMax(t->nmin, MINSAMPLES);
|
||||
count dim, comp;
|
||||
int fail;
|
||||
|
||||
if( VERBOSE > 1 ) {
|
||||
sprintf(out, "Suave input parameters:\n"
|
||||
" ndim " COUNT "\n ncomp " COUNT "\n"
|
||||
ML_NOT(" nvec " NUMBER "\n")
|
||||
" epsrel " REAL "\n epsabs " REAL "\n"
|
||||
" flags %d\n seed %d\n"
|
||||
" mineval " NUMBER "\n maxeval " NUMBER "\n"
|
||||
" nnew " NUMBER "\n flatness " REAL "\n"
|
||||
" statefile \"%s\"\n",
|
||||
" nnew " NUMBER "\n nmin " NUMBER "\n"
|
||||
" flatness " REAL "\n"
|
||||
" statefile \"%s\"",
|
||||
t->ndim, t->ncomp,
|
||||
t->epsrel, t->epsabs,
|
||||
ML_NOT(t->nvec,)
|
||||
SHOW(t->epsrel), SHOW(t->epsabs),
|
||||
t->flags, t->seed,
|
||||
t->mineval, t->maxeval,
|
||||
t->nnew, t->flatness,
|
||||
t->nnew, t->nmin,
|
||||
SHOW(t->flatness),
|
||||
t->statefile);
|
||||
Print(out);
|
||||
}
|
||||
@ -49,7 +54,7 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
if( BadComponent(t) ) return -2;
|
||||
if( BadDimension(t) ) return -1;
|
||||
|
||||
ShmAlloc(t, ShmRm(t));
|
||||
ShmAlloc(t, Master);
|
||||
ForkCores(t);
|
||||
|
||||
if( (fail = setjmp(t->abort)) ) goto abort;
|
||||
@ -132,7 +137,8 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
for( tot = state->totals, comp = 0; tot < Tot; ++tot )
|
||||
oe += sprintf(oe, "\n[" COUNT "] "
|
||||
REAL " +- " REAL " \tchisq " REAL " (" COUNT " df)",
|
||||
++comp, tot->avg, tot->err, tot->chisq, state->df);
|
||||
++comp, SHOW(tot->avg), SHOW(tot->err),
|
||||
SHOW(tot->chisq), state->df);
|
||||
Print(out);
|
||||
}
|
||||
|
||||
@ -173,7 +179,7 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
region->result[maxcomp].avg, Max(maxerr, t->epsabs));
|
||||
|
||||
bias = (t->epsrel < 1e-50) ? 2 :
|
||||
Max(pow(2., -(real)region->div/t->ndim)/t->epsrel, 2.);
|
||||
Max(powx(2., -(real)region->div/t->ndim)/t->epsrel, 2.);
|
||||
minfluct = INFTY;
|
||||
bisectdim = 0;
|
||||
for( dim = 0; dim < t->ndim; ++dim ) {
|
||||
@ -190,9 +196,9 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
minfluct = vLR[0].fluct + vLR[1].fluct;
|
||||
nnewL = IMax(
|
||||
(minfluct == 0) ? t->nnew/2 : (count)(vLR[0].fluct/minfluct*t->nnew),
|
||||
MINSAMPLES );
|
||||
minsamples );
|
||||
nL = vLR[0].n + nnewL;
|
||||
nnewR = IMax(t->nnew - nnewL, MINSAMPLES);
|
||||
nnewR = IMax(t->nnew - nnewL, minsamples);
|
||||
nR = vLR[1].n + nnewR;
|
||||
|
||||
regionL = RegionAlloc(t, nL, nnewL);
|
||||
@ -211,7 +217,7 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
while( n-- ) {
|
||||
cbool final = (*w < 0);
|
||||
if( x[bisectdim] < mid ) {
|
||||
if( final && wR > RegionW(regionR) ) wR[-1] = -fabs(wR[-1]);
|
||||
if( final && wR > RegionW(regionR) ) wR[-1] = -fabsx(wR[-1]);
|
||||
*wL++ = *w++;
|
||||
XCopy(xL, x);
|
||||
xL += t->ndim;
|
||||
@ -219,7 +225,7 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
fL += t->ncomp;
|
||||
}
|
||||
else {
|
||||
if( final && wL > RegionW(regionL) ) wL[-1] = -fabs(wL[-1]);
|
||||
if( final && wL > RegionW(regionL) ) wL[-1] = -fabsx(wL[-1]);
|
||||
*wR++ = *w++;
|
||||
XCopy(xR, x);
|
||||
xR += t->ndim;
|
||||
@ -259,15 +265,15 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
diff = Sq(.25*diff);
|
||||
sigsq = resL->sigsq + resR->sigsq;
|
||||
if( sigsq > 0 ) {
|
||||
creal c = Sq(1 + sqrt(diff/sigsq));
|
||||
creal c = Sq(1 + sqrtx(diff/sigsq));
|
||||
resL->sigsq *= c;
|
||||
resR->sigsq *= c;
|
||||
}
|
||||
resL->err = sqrt(resL->sigsq += diff);
|
||||
resR->err = sqrt(resR->sigsq += diff);
|
||||
resL->err = sqrtx(resL->sigsq += diff);
|
||||
resR->err = sqrtx(resR->sigsq += diff);
|
||||
|
||||
tot->sigsq += resL->sigsq + resR->sigsq - res->sigsq;
|
||||
tot->err = sqrt(tot->sigsq);
|
||||
tot->err = sqrtx(tot->sigsq);
|
||||
|
||||
tot->chisq += resL->chisq + resR->chisq - res->chisq;
|
||||
}
|
||||
@ -319,12 +325,12 @@ static int Integrate(This *t, real *integral, real *error, real *prob)
|
||||
|
||||
MLPutFunction(stdlink, "Cuba`Suave`region", 3);
|
||||
|
||||
MLPutRealList(stdlink, bounds, 2*t->ndim);
|
||||
MLPutRealxList(stdlink, bounds, 2*t->ndim);
|
||||
|
||||
MLPutFunction(stdlink, "List", t->ncomp);
|
||||
for( Res = (res = region->result) + t->ncomp; res < Res; ++res ) {
|
||||
real r[] = {res->avg, res->err, res->chisq};
|
||||
MLPutRealList(stdlink, r, Elements(r));
|
||||
MLPutRealxList(stdlink, r, Elements(r));
|
||||
}
|
||||
|
||||
MLPutInteger(stdlink, region->df);
|
||||
@ -338,8 +344,7 @@ abort:
|
||||
anchor = anchor->next;
|
||||
free(region);
|
||||
}
|
||||
WaitCores(t);
|
||||
ShmFree(t);
|
||||
ShmFree(t, Master);
|
||||
|
||||
StateRemove(t);
|
||||
|
||||
|
2
src/external/libCuba/src/suave/Makefile.am
vendored
2
src/external/libCuba/src/suave/Makefile.am
vendored
@ -3,7 +3,7 @@
|
||||
c_sources = Suave.c
|
||||
|
||||
AM_CPPFLAGS = -I. -I.. -I../common -DNOUNDERSCORE
|
||||
AM_CFLAGS = $(LOCAL_CUBA_LIB_CFLAGS)
|
||||
AM_CFLAGS = $(LOCAL_CUBA_LIB_CFLAGS) "-Dcubafun_=libSuavecubafun_"
|
||||
AM_LDFLAGS = $(LOCAL_LIB_LDFLAGS)
|
||||
|
||||
noinst_LTLIBRARIES = libsuave.la
|
||||
|
18
src/external/libCuba/src/suave/Sample.c
vendored
18
src/external/libCuba/src/suave/Sample.c
vendored
@ -2,7 +2,7 @@
|
||||
Sample.c
|
||||
the sampling step of Suave
|
||||
this file is part of Suave
|
||||
last modified 30 Jul 13 th
|
||||
last modified 13 Mar 15 th
|
||||
*/
|
||||
|
||||
|
||||
@ -71,7 +71,7 @@ static void Sample(This *t, cnumber nnew, Region *region,
|
||||
|
||||
while( w < lastw ) {
|
||||
cbool final = (*w < 0);
|
||||
creal weight = fabs(*w++);
|
||||
creal weight = fabsx(*w++);
|
||||
++n;
|
||||
|
||||
for( c = cumul, comp = 0; c < C; ++c ) {
|
||||
@ -80,20 +80,20 @@ static void Sample(This *t, cnumber nnew, Region *region,
|
||||
c->sqsum += Sq(wfun);
|
||||
|
||||
if( final ) {
|
||||
if( n > 1 ) {
|
||||
if( n >= t->nmin ) {
|
||||
real w = Weight(c->sum, c->sqsum, n);
|
||||
c->weightsum += c->weight = w;
|
||||
c->avgsum += c->avg = w*c->sum;
|
||||
|
||||
if( VERBOSE > 2 ) {
|
||||
creal sig = sqrt(1/w);
|
||||
creal sig = sqrtx(1/w);
|
||||
ss[comp] += (df == 0) ?
|
||||
sprintf(ss[comp], "\n[" COUNT "] "
|
||||
REAL " +- " REAL " (" NUMBER ")", comp + 1,
|
||||
c->sum, sig, n) :
|
||||
SHOW(c->sum), SHOW(sig), n) :
|
||||
sprintf(ss[comp], "\n "
|
||||
REAL " +- " REAL " (" NUMBER ")",
|
||||
c->sum, sig, n);
|
||||
SHOW(c->sum), SHOW(sig), n);
|
||||
}
|
||||
|
||||
if( df == 0 ) c->guess = c->sum;
|
||||
@ -107,7 +107,7 @@ static void Sample(This *t, cnumber nnew, Region *region,
|
||||
}
|
||||
}
|
||||
|
||||
if( final ) ++df, n = 0;
|
||||
if( final ) df -= NegQ(t->nmin - n - 1), n = 0;
|
||||
}
|
||||
|
||||
region->df = --df;
|
||||
@ -124,7 +124,7 @@ static void Sample(This *t, cnumber nnew, Region *region,
|
||||
res->sigsq = sigsq;
|
||||
res->avg = avg;
|
||||
}
|
||||
res->err = sqrt(res->sigsq);
|
||||
res->err = sqrtx(res->sigsq);
|
||||
|
||||
res->chisq = (sigsq < .9*NOTZERO) ? 0 : c->chisqsum - avg*c->chisum;
|
||||
/* This catches the special case where the integrand is constant
|
||||
@ -153,7 +153,7 @@ static void Sample(This *t, cnumber nnew, Region *region,
|
||||
for( comp = 0, res = region->result;
|
||||
comp < t->ncomp; ++comp, ++res ) {
|
||||
p += sprintf(p, "%s \tchisq " REAL " (" COUNT " df)",
|
||||
p0, res->chisq, df);
|
||||
p0, SHOW(res->chisq), df);
|
||||
p0 += chars;
|
||||
}
|
||||
|
||||
|
36
src/external/libCuba/src/suave/Suave.c
vendored
36
src/external/libCuba/src/suave/Suave.c
vendored
@ -1,8 +1,8 @@
|
||||
/*
|
||||
Suave.c
|
||||
Subregion-adaptive Vegas Monte-Carlo integration
|
||||
Subregion-adaptive Vegas Monte Carlo integration
|
||||
by Thomas Hahn
|
||||
last modified 17 Sep 13 th
|
||||
last modified 28 Nov 14 th
|
||||
*/
|
||||
|
||||
|
||||
@ -15,64 +15,80 @@
|
||||
/*********************************************************************/
|
||||
|
||||
Extern void EXPORT(Suave)(ccount ndim, ccount ncomp,
|
||||
Integrand integrand, void *userdata,
|
||||
Integrand integrand, void *userdata, cnumber nvec,
|
||||
creal epsrel, creal epsabs,
|
||||
cint flags, cint seed,
|
||||
cnumber mineval, cnumber maxeval,
|
||||
cnumber nnew, creal flatness,
|
||||
cchar *statefile,
|
||||
cnumber nnew, cnumber nmin, creal flatness,
|
||||
cchar *statefile, Spin **pspin,
|
||||
count *pnregions, number *pneval, int *pfail,
|
||||
real *integral, real *error, real *prob)
|
||||
{
|
||||
This t;
|
||||
|
||||
VerboseInit();
|
||||
|
||||
t.ndim = ndim;
|
||||
t.ncomp = ncomp;
|
||||
t.integrand = integrand;
|
||||
t.userdata = userdata;
|
||||
t.nvec = nvec;
|
||||
t.epsrel = epsrel;
|
||||
t.epsabs = epsabs;
|
||||
t.flags = flags;
|
||||
t.flags = MaxVerbose(flags);
|
||||
t.seed = seed;
|
||||
t.mineval = mineval;
|
||||
t.maxeval = maxeval;
|
||||
t.nnew = nnew;
|
||||
t.nmin = IMax(nmin, 2);
|
||||
t.flatness = flatness;
|
||||
t.statefile = statefile;
|
||||
FORK_ONLY(t.spin = Invalid(pspin) ? NULL : *pspin;)
|
||||
|
||||
*pfail = Integrate(&t, integral, error, prob);
|
||||
*pnregions = t.nregions;
|
||||
*pneval = t.neval;
|
||||
|
||||
WaitCores(&t, pspin);
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
Extern void EXPORT(suave)(ccount *pndim, ccount *pncomp,
|
||||
Integrand integrand, void *userdata,
|
||||
Integrand integrand, void *userdata, cnumber *pnvec,
|
||||
creal *pepsrel, creal *pepsabs,
|
||||
cint *pflags, cint *pseed,
|
||||
cnumber *pmineval, cnumber *pmaxeval,
|
||||
cnumber *pnnew, creal *pflatness,
|
||||
cchar *statefile,
|
||||
cnumber *pnnew, cnumber *pnmin, creal *pflatness,
|
||||
cchar *statefile, Spin **pspin,
|
||||
count *pnregions, number *pneval, int *pfail,
|
||||
real *integral, real *error, real *prob, cint statefilelen)
|
||||
{
|
||||
This t;
|
||||
|
||||
VerboseInit();
|
||||
|
||||
t.ndim = *pndim;
|
||||
t.ncomp = *pncomp;
|
||||
t.integrand = integrand;
|
||||
t.userdata = userdata;
|
||||
t.nvec = *pnvec;
|
||||
t.epsrel = *pepsrel;
|
||||
t.epsabs = *pepsabs;
|
||||
t.flags = *pflags;
|
||||
t.flags = MaxVerbose(*pflags);
|
||||
t.seed = *pseed;
|
||||
t.mineval = *pmineval;
|
||||
t.maxeval = *pmaxeval;
|
||||
t.nnew = *pnnew;
|
||||
t.nmin = IMax(*pnmin, 2);
|
||||
t.flatness = *pflatness;
|
||||
CString(t.statefile, statefile, statefilelen);
|
||||
FORK_ONLY(t.spin = Invalid(pspin) ? NULL : *pspin;)
|
||||
|
||||
*pfail = Integrate(&t, integral, error, prob);
|
||||
*pnregions = t.nregions;
|
||||
*pneval = t.neval;
|
||||
|
||||
WaitCores(&t, pspin);
|
||||
}
|
||||
|
||||
|
11
src/external/libCuba/src/suave/decl.h
vendored
11
src/external/libCuba/src/suave/decl.h
vendored
@ -2,7 +2,7 @@
|
||||
decl.h
|
||||
Type declarations
|
||||
this file is part of Suave
|
||||
last modified 29 Jul 13 th
|
||||
last modified 25 Nov 14 th
|
||||
*/
|
||||
|
||||
|
||||
@ -35,23 +35,24 @@ typedef struct {
|
||||
typedef const Bounds cBounds;
|
||||
|
||||
typedef int (*Integrand)(ccount *, creal *, ccount *, real *,
|
||||
void *, creal *, cint *);
|
||||
void *, cnumber *, cint *, creal *, cint *);
|
||||
|
||||
typedef struct _this {
|
||||
count ndim, ncomp;
|
||||
#ifndef MLVERSION
|
||||
Integrand integrand;
|
||||
void *userdata;
|
||||
number nvec;
|
||||
#ifdef HAVE_FORK
|
||||
int ncores, *child;
|
||||
real *frame;
|
||||
SHM_ONLY(int shmid;)
|
||||
Spin *spin;
|
||||
real *frame;
|
||||
#endif
|
||||
#endif
|
||||
real epsrel, epsabs;
|
||||
int flags, seed;
|
||||
number mineval, maxeval;
|
||||
number nnew;
|
||||
number nnew, nmin;
|
||||
real flatness;
|
||||
cchar *statefile;
|
||||
count nregions;
|
||||
|
29
src/external/libCuba/src/vegas/CMakeLists.txt
vendored
Normal file
29
src/external/libCuba/src/vegas/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
#--- vegas --------------------------------------------------------------------
|
||||
|
||||
#--- obj lib creation ---------------------------------------------------------
|
||||
add_library(vegas OBJECT
|
||||
Vegas.c
|
||||
)
|
||||
|
||||
#--- make sure that the include directory is found ----------------------------
|
||||
target_include_directories(
|
||||
vegas BEFORE PRIVATE
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../common>
|
||||
)
|
||||
|
||||
#--- check for pre compile flags ----------------------------------------------
|
||||
set(COMP_DEF "-DHAVE_CONFIG_H")
|
||||
set(COMP_DEF ${COMP_DEF} "-DNOUNDERSCORE")
|
||||
set(COMP_DEF ${COMP_DEF} "-Dcubafun_=libVegascubafun_")
|
||||
|
||||
target_compile_definitions(
|
||||
vegas PRIVATE ${COMP_DEF}
|
||||
)
|
||||
|
||||
#--- set compiler options -----------------------------------------------------
|
||||
target_compile_options(
|
||||
vegas PRIVATE -fPIC
|
||||
)
|
4
src/external/libCuba/src/vegas/Grid.c
vendored
4
src/external/libCuba/src/vegas/Grid.c
vendored
@ -2,7 +2,7 @@
|
||||
Grid.c
|
||||
utility functions for the Vegas grid
|
||||
this file is part of Vegas
|
||||
last modified 13 Dec 11 th
|
||||
last modified 12 Mar 15 th
|
||||
*/
|
||||
|
||||
|
||||
@ -70,7 +70,7 @@ static void RefineGrid(cThis *t, Grid grid, Grid margsum)
|
||||
real impfun = 0;
|
||||
if( margsum[bin] > 0 ) {
|
||||
creal r = margsum[bin]*norm;
|
||||
avgperbin += impfun = pow((r - 1)/log(r), 1.5);
|
||||
avgperbin += impfun = powx((r - 1)/log(r), 1.5);
|
||||
}
|
||||
imp[bin] = impfun;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user