std::function<
double(
double)>& func,
44 doubledelta = .0001) {
46uint64_t numDeltas =
static_cast<uint64_t
>((ub - lb) / delta);
47 for(
inti = 0; i < numDeltas; i++) {
48 doublebegin = lb + i * delta;
49 doubleend = lb + (i + 1) * delta;
50result += delta * (func(begin) + func(end)) / 2;
62void test_eval(
doubleapprox,
doubleexpected,
doublethreshold) {
63assert(approx >= expected * (1 - threshold));
64assert(approx <= expected * (1 + threshold));
773.24, 7.56, [](
const doublex) {
return log(x) +
exp(x) + x; });
78std::cout <<
"Test Case 1"<< std::endl;
79std::cout <<
"function: log(x) + e^x + x"<< std::endl;
80std::cout <<
"range: [3.24, 7.56]"<< std::endl;
81std::cout <<
"value: "<<
test_1<< std::endl;
83std::cout <<
"Test 1 Passed!"<< std::endl;
84std::cout <<
"====================="<< std::endl;
87 returnx * x + cos(x) +
exp(x) +
log(x) *
log(x);
89std::cout <<
"Test Case 2"<< std::endl;
90std::cout <<
"function: x^2 + cos(x) + e^x + log^2(x)"<< std::endl;
91std::cout <<
"range: [.023, 3.69]"<< std::endl;
92std::cout <<
"value: "<<
test_2<< std::endl;
94std::cout <<
"Test 2 Passed!"<< std::endl;
95std::cout <<
"====================="<< std::endl;
9810.78, 24.899, [](
const doublex) {
returnx * x * x - x * x + 378; });
99std::cout <<
"Test Case 3"<< std::endl;
100std::cout <<
"function: x^3 - x^2 + 378"<< std::endl;
101std::cout <<
"range: [10.78, 24.899]"<< std::endl;
102std::cout <<
"value: "<<
test_3<< std::endl;
104std::cout <<
"Test 3 Passed!"<< std::endl;
105std::cout <<
"====================="<< std::endl;
109[](
const doublex) {
returncos(x) * tan(x) * x * x +
exp(x); },
111std::cout <<
"Test Case 4"<< std::endl;
112std::cout <<
"function: cos(x)*tan(x)*x^2 + e^x"<< std::endl;
113std::cout <<
"range: [.101, .505]"<< std::endl;
114std::cout <<
"value: "<< test_4 << std::endl;
116std::cout <<
"Test 4 Passed!"<< std::endl;
117std::cout <<
"====================="<< std::endl;
120-1, 1, [](
const doublex) {
return exp(-1 / (x * x)); });
121std::cout <<
"Test Case 5"<< std::endl;
122std::cout <<
"function: e^(-1/x^2)"<< std::endl;
123std::cout <<
"range: [-1, 1]"<< std::endl;
124std::cout <<
"value: "<< test_5 << std::endl;
126std::cout <<
"Test 5 Passed!"<< std::endl;
static void test()
Self-test implementations.
int main()
Main function.
void log(T msg)
A function to print given message on console.
uint256_t exp(uint256_t number, uint256_t power, const uint256_t &mod)
This function calculates number raised to exponent power under modulo mod using Modular Exponentiatio...
void test_eval(double approx, double expected, double threshold)
Wrapper to evaluate if the approximated value is within .XX% threshold of the exact value.
double integral_approx(double lb, double ub, const std::function< double(double)> &func, double delta=.0001)
Computes integral approximation.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4