ppf build status update
Good results obtained on Windows 7 using Microsoft SDK 7.1 (msvc-10.0, x64), Boost-1.55.0, Blitz++-0.10, ActivePython-2.7.6 and Numpy (MKL-1.8).
There were a few 'tweaks' necessary to obtain the build. One thing to watch out for is the absence of these declarations in blitz-0.10/blitz/ms/bzconfig.h:
/* Macro for declaring aligned variables */ #ifndef BZ_ALIGN_VARIABLE # define BZ_ALIGN_VARIABLE(vartype,varname,alignment) \ vartype varname; \ /**/ #endif /* Set SIMD instruction width in bytes */ #ifndef BZ_SIMD_WIDTH # define BZ_SIMD_WIDTH 1 #endifI built
ppf_date_time.pyd
and ppf_math.pyd
with a command along the lines of
bjam toolset=msvc-10.0 link=shared threading=multi variant=release address-model=64I think the presence of these features confuses the install commands. I had to move the files into final position by hand. My user-config.jam was this:
import toolset : using ; using msvc : 10.0 : "c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/Bin/amd64/cl.exe" ; using python : 2.7 : "c:/python27/python.exe" ;and my site-config.jam read like this
import project ; project.initialize $(__name__) ; project site-config ; alias boost_headers : : : : <include>c:/project/boost_1_55_0 ; alias python_headers : : : : <include>c:/python27/include ; alias numpy_headers : : : : <include>c:/Python27/Lib/site-packages/numpy/core/include ; alias blitz_headers : : : : <include>c:/project/blitz-0.10 ; lib python : : <name>python27 : <search>c:/python27/libs <link>shared ; lib boostpython : : <name>boost_python-vc100-mt-1_55 <search>c:/project/boost_1_55_0/stage/lib <link>shared <variant>release <toolset-msvc:version>10.0 ; lib boostunittestframework : : <name>boost_unit_test_framework-vc100-mt-1_55 <search>c:/project/boost-1_55_0/stage/lib <link>static <variant>release <toolset-msvc:version>10.0 ; lib boostdatetime : : <name>boost_date_time-vc100-mt-1_55 <search>c:/project/boost-1_55_0/stage/lib <link>static <variant>release <toolset-msvc:version>10.0 ;Lines 24-29 of ppf/ext/lib/date_time/src/register_date_more.cpp seem to trigger an ambiguous overload error - that needs looking at. I worked around it with the following for now.
std::string to_string() const { //return this->get_override("to_string")(); return "not implemented - fix me"; }After build & installation (python setup.py install), as always, don't forget to configure your environment approiately.
set PATH="c:/project/boost-1_55_0/stage/lib;%PATH%" set PYTHONPATH="c:/python27/lib/site-packages;%PYTHONPATH%"(of course make sure that the files
c:/python27/lib/site-packages/ppf/date_time/ppf_date_time.pyd
, c:/python27/lib/site-packages/ppf/math/ppf_math.pyd
and c:/project/boost-1_55_0/stage/lib/boost_python-vc100-mt-1_55.dll
exist).
Testing goes like this.
c:\Python27\Lib\site-packages\ppf\test>python test_all.py --verbose python test_all.py --verbose test_call (test_core.black_scholes_tests) ... ok test_put (test_core.black_scholes_tests) ... ok test (test_core.libor_rate_tests) ... ok test (test_core.swap_rate_tests) ... ok test_nth_imm_of_year (test_date_time.imm_tests) ... ok test_first_imm_after (test_date_time.imm_tests) ... ok test_first_imm_before (test_date_time.imm_tests) ... ok test (test_date_time.business_day_tests) ... ok test_discount_factor (test_hull_white.requestor_tests) ... ok test_term_vol (test_hull_white.requestor_tests) ... ok test (test_hull_white.state_tests) ... ok test_numeraire_rebased_bond (test_hull_white.fill_tests) ... ok test_libor (test_hull_white.fill_tests) ... ok test_discounted_libor_rollback (test_hull_white.rollback_tests) ... ok test_bond_option (test_hull_white.rollback_tests) ... ok test_constant (test_hull_white.rollback_tests) ... ok test_mean_and_variance (test_hull_white.evolve_tests) ... ok test_bond (test_hull_white.evolve_tests) ... ok test_explanatory_variables (test_hull_white.exercise_tests) ... ok test_value (test_lattice_pricer.swap_tests) ... ok test_value (test_lattice_pricer.bermudan_tests) ... ok deep_in_the_money_test (test_lattice_pricer.moneyness_tests) ... ok deep_out_the_money_test (test_lattice_pricer.moneyness_tests) ... ok test (test_market.surface_tests) ... ok test (test_math.linear_interpolation_tests) ... ok test_list (test_math.cubic_spline_interpolation_tests) ... ok test_array (test_math.cubic_spline_interpolation_tests) ... ok test (test_math.solve_tridiagonal_system_tests) ... ok test (test_math.solve_upper_diagonal_system_tests) ... ok test (test_math.singular_value_decomposition_back_substitution_tests) ... ok test (test_math.generalised_least_squares_fit_tests) ... ok test1 (test_math.bisect_tests) ... ok test2 (test_math.bisect_tests) ... ok test (test_math.newton_raphson_tests) ... ok test (test_math.piecewise_cubic_fitting_tests) ... ok test1 (test_math.normal_distribution_integral_tests) ... ok test2 (test_math.normal_distribution_integral_tests) ... ok lognormal_martingale_test (test_math.integrator_tests) ... ok tower_law_test (test_math.integrator_tests) ... ok atm_option_test (test_math.integrator_tests) ... ok no_trigger_limit_test (test_monte_carlo_pricer.tarn_tests) ... ok trigger_after_first_flow_test (test_monte_carlo_pricer.tarn_tests) ... ok monotonic_with_target_test (test_monte_carlo_pricer.tarn_tests) ... ok test_value (test_monte_carlo_pricer.bermudan_tests) ... ok deep_in_the_money_test (test_monte_carlo_pricer.moneyness_tests) ... ok deep_out_the_money_test (test_monte_carlo_pricer.moneyness_tests) ... ok test_lower_bound (test_utility.bound_tests) ... ok test_upper_bound (test_utility.bound_tests) ... ok test_equal_range (test_utility.bound_tests) ... ok test_bound (test_utility.bound_tests) ... ok test_bound_ci (test_utility.bound_tests) ... ok ---------------------------------------------------------------------- Ran 51 tests in 8.090s OK
It seems there are builds now for Python 3.3 Numpy here. With these, it should be possible to produce a Python 3.3, 64-bit Windows ppf
. This upgrade will require some minor changes to the ppf
Python code.