Blame view

validate/validate-bessel.cpp 1.41 KB
f1402849   dmayerich   renewed commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
  #include <complex>

  #include <iostream>
  #include <stdio.h>
  #include <string.h>

  #include "rts/complex.h"

  #include "rts/sbessel.h"

  

  #include "compare.h"
  
  typedef float precision;
  

  //typedef std::complex<double> ptype;

  typedef rts::complex<precision> ptype;

  

  void cpuValidateBessel()

  {

  

  	//order

  	precision v = 5;

  	precision vm;

  

  	//parameter

  	precision max_z = 5;

  	int nz = 20;

  	precision dz = max_z / nz;

  

  	//bessel function results (first and second kind)

  	int S = sizeof(ptype) * (v + 1);

  

  	ptype* jv = (ptype*)malloc(S);

  	ptype* yv = (ptype*)malloc(S);
  	ptype* hv = (ptype*)malloc(S);

  

  
      std::cout<<"---------j_v(x)-------------"<<std::endl;

  	rts::complex<precision> z;

  	for(int iz = 0; iz < nz; iz++)

  	{

  		z = iz * dz;

  

  		rts::sbesselj<precision>(v, z, jv);

  

  		std::cout<<z.toStr()<<", "<<jv[0].toStr()<<", "<<jv[1].toStr()<<", "<<jv[2].toStr()<<std::endl;

  

  	}
  
  	std::cout<<"---------y_v(x)-------------"<<std::endl;

  	for(int iz = 0; iz < nz; iz++)

  	{

  		z = iz * dz;

  

  		rts::sbessely<precision>(v, z, yv);

  

  		std::cout<<z.toStr()<<", "<<yv[0].toStr()<<", "<<yv[1].toStr()<<", "<<yv[2].toStr()<<std::endl;

  

  	}
  
  	std::cout<<"---------h(1)_v(x)-------------"<<std::endl;

  	for(int iz = 0; iz < nz; iz++)

  	{

  		z = iz * dz;

  

  		rts::sbesselh1<precision>(v, z, hv);

  

  		std::cout<<z.toStr()<<", "<<hv[0].toStr()<<", "<<hv[1].toStr()<<", "<<hv[2].toStr()<<std::endl;

  

  	}

  

  

  

  

  

  

  

  

  }