mirror of
https://github.com/boostorg/math.git
synced 2026-02-22 15:32:28 +00:00
124 lines
5.0 KiB
C++
124 lines
5.0 KiB
C++
|
|
#include <iostream>
|
|
#include <iomanip>
|
|
#include "../performance/performance_measure.hpp"
|
|
#include "../performance/test_reference.cpp"
|
|
|
|
extern void polynomial_evaluate_0();
|
|
extern void polynomial_evaluate_1();
|
|
extern void polynomial_evaluate_2();
|
|
extern void polynomial_evaluate_3();
|
|
extern void polynomial_evaluate_m0();
|
|
extern void polynomial_evaluate_m1();
|
|
extern void polynomial_evaluate_m2();
|
|
extern void polynomial_evaluate_m3();
|
|
extern void rational_evaluate_0();
|
|
extern void rational_evaluate_1();
|
|
extern void rational_evaluate_2();
|
|
extern void rational_evaluate_3();
|
|
extern void rational_evaluate_m0();
|
|
extern void rational_evaluate_m1();
|
|
extern void rational_evaluate_m2();
|
|
extern void rational_evaluate_m3();
|
|
|
|
double total = 0;
|
|
|
|
int main(int argc)
|
|
{
|
|
double reference_time = performance_measure(reference_evaluate);
|
|
double test_time;
|
|
|
|
std::cout << std::setprecision(3);
|
|
|
|
//
|
|
// BOOST_MATH_POLY_METHOD:
|
|
//
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing BOOST_MATH_POLY_METHOD=0";
|
|
test_time = performance_measure(polynomial_evaluate_0);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing BOOST_MATH_POLY_METHOD=1";
|
|
test_time = performance_measure(polynomial_evaluate_1);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing BOOST_MATH_POLY_METHOD=2";
|
|
test_time = performance_measure(polynomial_evaluate_2);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing BOOST_MATH_POLY_METHOD=3";
|
|
test_time = performance_measure(polynomial_evaluate_3);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
//
|
|
// Mixed polynomial Arithmetic:
|
|
//
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing int/double arithmetic with BOOST_MATH_POLY_METHOD=0";
|
|
test_time = performance_measure(polynomial_evaluate_0);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing int/double arithmetic with BOOST_MATH_POLY_METHOD=1";
|
|
test_time = performance_measure(polynomial_evaluate_1);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing int/double arithmetic with BOOST_MATH_POLY_METHOD=2";
|
|
test_time = performance_measure(polynomial_evaluate_2);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing int/double arithmetic with BOOST_MATH_POLY_METHOD=3";
|
|
test_time = performance_measure(polynomial_evaluate_3);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
|
|
//
|
|
// BOOST_MATH_RATIONAL_METHOD:
|
|
//
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing BOOST_MATH_RATIONAL_METHOD=0";
|
|
test_time = performance_measure(rational_evaluate_0);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing BOOST_MATH_RATIONAL_METHOD=1";
|
|
test_time = performance_measure(rational_evaluate_1);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing BOOST_MATH_RATIONAL_METHOD=2";
|
|
test_time = performance_measure(rational_evaluate_2);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing BOOST_MATH_RATIONAL_METHOD=3";
|
|
test_time = performance_measure(rational_evaluate_3);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
//
|
|
// Mixed rational Arithmetic:
|
|
//
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing int/double arithmetic with BOOST_MATH_RATIONAL_METHOD=0";
|
|
test_time = performance_measure(rational_evaluate_0);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing int/double arithmetic with BOOST_MATH_RATIONAL_METHOD=1";
|
|
test_time = performance_measure(rational_evaluate_1);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing int/double arithmetic with BOOST_MATH_RATIONAL_METHOD=2";
|
|
test_time = performance_measure(rational_evaluate_2);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
|
|
std::cout << std::setw(70) << std::left << std::scientific << "Testing int/double arithmetic with BOOST_MATH_RATIONAL_METHOD=3";
|
|
test_time = performance_measure(rational_evaluate_3);
|
|
std::cout << test_time - reference_time << std::endl;
|
|
|
|
if(argc > 100000)
|
|
std::cerr << total << std::endl;
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
void consume_result(double x)
|
|
{
|
|
// Do nothing proceedure, don't let whole program optimisation
|
|
// optimise this away - doing so may cause false readings....
|
|
total += x;
|
|
}
|
|
|
|
void set_call_count(int i)
|
|
{}
|
|
|