• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright Nick Thompson, 2020
3  * Use, modification and distribution are subject to the
4  * Boost Software License, Version 1.0. (See accompanying file
5  * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6  */
7 #include <cstdint>
8 #include <cmath>
9 #include <boost/math/quadrature/wavelet_transforms.hpp>
10 #include <Eigen/Dense>
11 
12 
main()13 int main()
14 {
15     using boost::math::quadrature::daubechies_wavelet_transform;
16     double a = 1.3;
17     auto f = [&a](double t) {
18         if(t==0) {
19             return double(0);
20         }
21         return std::sin(a/t);
22     };
23 
24     auto Wf = daubechies_wavelet_transform<decltype(f), double, 8>(f);
25 
26     Eigen::MatrixXd grid(512, 512);
27     double s = 7;
28     double t = 0;
29     grid(0,0) = Wf(s, t);
30 
31     auto g = [&a](double t)->std::complex<double> {
32         if (t==0) {
33             return {0.0, 0.0};
34         }
35         return std::exp(std::complex<double>(0.0, a/t));
36     };
37 
38     auto Wg = daubechies_wavelet_transform<decltype(g), double, 8>(g);
39     std::cout << "W[f](s,t) = " << Wf(s,t) << "\n";
40     std::cout << "W[g](s,t) = " << Wg(s, t) << "\n";
41     std::cout << Wg(0.0, 3.5) << "\n";
42     std::cout << Wf(0.0, 4.8) << "\n";
43     std::cout << "W[f](-s,t) = " << Wf(-s, t) << "\n";
44     std::cout << "W[g](-s,t) = " << Wg(-s, t) << "\n";
45 
46 }
47