1 /**
2 * \file NETGeographicLib/EllipticFunction.cpp
3 * \brief Implementation for NETGeographicLib::EllipticFunction class
4 *
5 * NETGeographicLib is copyright (c) Scott Heiman (2013)
6 * GeographicLib is Copyright (c) Charles Karney (2010-2012)
7 * <charles@karney.com> and licensed under the MIT/X11 License.
8 * For more information, see
9 * https://geographiclib.sourceforge.io/
10 **********************************************************************/
11 #include "stdafx.h"
12 #include "GeographicLib/EllipticFunction.hpp"
13 #include "EllipticFunction.h"
14 #include "NETGeographicLib.h"
15
16 using namespace NETGeographicLib;
17
18 const char BADALLOC[] = "Failed to allocate memory for the GeographicLib::EllipticFunction.";
19
20 //*****************************************************************************
EllipticFunction(double k2,double alpha2)21 EllipticFunction::EllipticFunction(double k2, double alpha2)
22 {
23 try
24 {
25 m_pEllipticFunction = new GeographicLib::EllipticFunction( k2, alpha2 );
26 }
27 catch ( std::bad_alloc )
28 {
29 throw gcnew GeographicErr( BADALLOC );
30 }
31 }
32
33 //*****************************************************************************
EllipticFunction(double k2,double alpha2,double kp2,double alphap2)34 EllipticFunction::EllipticFunction(double k2, double alpha2, double kp2, double alphap2)
35 {
36 try
37 {
38 m_pEllipticFunction = new GeographicLib::EllipticFunction( k2, alpha2, kp2, alphap2 );
39 }
40 catch ( std::bad_alloc err )
41 {
42 throw gcnew GeographicErr( BADALLOC );
43 }
44 }
45
46 //*****************************************************************************
47 EllipticFunction::!EllipticFunction()
48 {
49 if ( m_pEllipticFunction != NULL )
50 {
51 delete m_pEllipticFunction;
52 m_pEllipticFunction = NULL;
53 }
54 }
55
56 //*****************************************************************************
Reset(double k2,double alpha2)57 void EllipticFunction::Reset(double k2, double alpha2 )
58 {
59 m_pEllipticFunction->Reset( k2, alpha2 );
60 }
61
62 //*****************************************************************************
Reset(double k2,double alpha2,double kp2,double alphap2)63 void EllipticFunction::Reset(double k2, double alpha2, double kp2, double alphap2)
64 {
65 m_pEllipticFunction->Reset( k2, alpha2, kp2, alphap2 );
66 }
67
68 //*****************************************************************************
K()69 double EllipticFunction::K()
70 {
71 return m_pEllipticFunction->K();
72 }
73
74 //*****************************************************************************
E()75 double EllipticFunction::E()
76 {
77 return m_pEllipticFunction->E();
78 }
79
80 //*****************************************************************************
D()81 double EllipticFunction::D()
82 {
83 return m_pEllipticFunction->D();
84 }
85
86 //*****************************************************************************
KE()87 double EllipticFunction::KE()
88 {
89 return m_pEllipticFunction->KE();
90 }
91
92 //*****************************************************************************
Pi()93 double EllipticFunction::Pi()
94 {
95 return m_pEllipticFunction->Pi();
96 }
97
98 //*****************************************************************************
G()99 double EllipticFunction::G()
100 {
101 return m_pEllipticFunction->G();
102 }
103
104 //*****************************************************************************
H()105 double EllipticFunction::H()
106 {
107 return m_pEllipticFunction->H();
108 }
109
110 //*****************************************************************************
F(double phi)111 double EllipticFunction::F(double phi)
112 {
113 return m_pEllipticFunction->F( phi );
114 }
115
116 //*****************************************************************************
E(double phi)117 double EllipticFunction::E(double phi)
118 {
119 return m_pEllipticFunction->E( phi );
120 }
121
122 //*****************************************************************************
Ed(double ang)123 double EllipticFunction::Ed(double ang)
124 {
125 return m_pEllipticFunction->Ed(ang);
126 }
127
128 //*****************************************************************************
Einv(double x)129 double EllipticFunction::Einv(double x)
130 {
131 return m_pEllipticFunction->Einv(x);
132 }
133
134 //*****************************************************************************
Pi(double phi)135 double EllipticFunction::Pi(double phi)
136 {
137 return m_pEllipticFunction->Pi(phi);
138 }
139
140 //*****************************************************************************
D(double phi)141 double EllipticFunction::D(double phi)
142 {
143 return m_pEllipticFunction->D(phi);
144 }
145
146 //*****************************************************************************
G(double phi)147 double EllipticFunction::G(double phi)
148 {
149 return m_pEllipticFunction->G(phi);
150 }
151
152 //*****************************************************************************
H(double phi)153 double EllipticFunction::H(double phi)
154 {
155 return m_pEllipticFunction->H(phi);
156 }
157
158 //*****************************************************************************
F(double sn,double cn,double dn)159 double EllipticFunction::F(double sn, double cn, double dn)
160 {
161 return m_pEllipticFunction->F( sn, cn, dn );
162 }
163
164 //*****************************************************************************
E(double sn,double cn,double dn)165 double EllipticFunction::E(double sn, double cn, double dn)
166 {
167 return m_pEllipticFunction->E( sn, cn, dn );
168 }
169
170 //*****************************************************************************
Pi(double sn,double cn,double dn)171 double EllipticFunction::Pi(double sn, double cn, double dn)
172 {
173 return m_pEllipticFunction->Pi( sn, cn, dn );
174 }
175
176 //*****************************************************************************
D(double sn,double cn,double dn)177 double EllipticFunction::D(double sn, double cn, double dn)
178 {
179 return m_pEllipticFunction->D( sn, cn, dn );
180 }
181
182 //*****************************************************************************
G(double sn,double cn,double dn)183 double EllipticFunction::G(double sn, double cn, double dn)
184 {
185 return m_pEllipticFunction->G( sn, cn, dn );
186 }
187
188 //*****************************************************************************
H(double sn,double cn,double dn)189 double EllipticFunction::H(double sn, double cn, double dn)
190 {
191 return m_pEllipticFunction->H( sn, cn, dn );
192 }
193
194 //*****************************************************************************
deltaF(double sn,double cn,double dn)195 double EllipticFunction::deltaF(double sn, double cn, double dn)
196 {
197 return m_pEllipticFunction->deltaF( sn, cn, dn );
198 }
199
200 //*****************************************************************************
deltaE(double sn,double cn,double dn)201 double EllipticFunction::deltaE(double sn, double cn, double dn)
202 {
203 return m_pEllipticFunction->deltaE( sn, cn, dn );
204 }
205
206 //*****************************************************************************
deltaEinv(double stau,double ctau)207 double EllipticFunction::deltaEinv(double stau, double ctau)
208 {
209 return m_pEllipticFunction->deltaEinv( stau, ctau );
210 }
211
212 //*****************************************************************************
deltaPi(double sn,double cn,double dn)213 double EllipticFunction::deltaPi(double sn, double cn, double dn)
214 {
215 return m_pEllipticFunction->deltaPi( sn, cn, dn );
216 }
217
218 //*****************************************************************************
deltaD(double sn,double cn,double dn)219 double EllipticFunction::deltaD(double sn, double cn, double dn)
220 {
221 return m_pEllipticFunction->deltaD( sn, cn, dn );
222 }
223
224 //*****************************************************************************
deltaG(double sn,double cn,double dn)225 double EllipticFunction::deltaG(double sn, double cn, double dn)
226 {
227 return m_pEllipticFunction->deltaG( sn, cn, dn );
228 }
229
230 //*****************************************************************************
deltaH(double sn,double cn,double dn)231 double EllipticFunction::deltaH(double sn, double cn, double dn)
232 {
233 return m_pEllipticFunction->deltaH( sn, cn, dn );
234 }
235
236 //*****************************************************************************
237 void EllipticFunction::sncndn(double x,
238 [System::Runtime::InteropServices::Out] double% sn,
239 [System::Runtime::InteropServices::Out] double% cn,
240 [System::Runtime::InteropServices::Out] double% dn)
241 {
242 double lsn, lcn, ldn;
243 m_pEllipticFunction->sncndn( x, lsn, lcn, ldn );
244 sn = lsn;
245 cn = lcn;
246 dn = ldn;
247 }
248
249 //*****************************************************************************
Delta(double sn,double cn)250 double EllipticFunction::Delta(double sn, double cn)
251 {
252 return m_pEllipticFunction->Delta( sn, cn );
253 }
254
255 //*****************************************************************************
RF(double x,double y,double z)256 double EllipticFunction::RF(double x, double y, double z)
257 {
258 return GeographicLib::EllipticFunction::RF( x, y, z );
259 }
260
261 //*****************************************************************************
RF(double x,double y)262 double EllipticFunction::RF(double x, double y)
263 {
264 return GeographicLib::EllipticFunction::RF( x, y );
265 }
266
267 //*****************************************************************************
RC(double x,double y)268 double EllipticFunction::RC(double x, double y)
269 {
270 return GeographicLib::EllipticFunction::RC( x, y );
271 }
272
273 //*****************************************************************************
RG(double x,double y,double z)274 double EllipticFunction::RG(double x, double y, double z)
275 {
276 return GeographicLib::EllipticFunction::RG( x, y, z );
277 }
278
279 //*****************************************************************************
RG(double x,double y)280 double EllipticFunction::RG(double x, double y)
281 {
282 return GeographicLib::EllipticFunction::RG( x, y );
283 }
284
285 //*****************************************************************************
RJ(double x,double y,double z,double p)286 double EllipticFunction::RJ(double x, double y, double z, double p)
287 {
288 return GeographicLib::EllipticFunction::RJ( x, y, z, p );
289 }
290
291 //*****************************************************************************
RD(double x,double y,double z)292 double EllipticFunction::RD(double x, double y, double z)
293 {
294 return GeographicLib::EllipticFunction::RD( x, y, z );
295 }
296
297 //*****************************************************************************
get()298 double EllipticFunction::k2::get()
299 { return m_pEllipticFunction->k2(); }
300
301 //*****************************************************************************
get()302 double EllipticFunction::kp2::get()
303 { return m_pEllipticFunction->kp2(); }
304
305 //*****************************************************************************
get()306 double EllipticFunction::alpha2::get()
307 { return m_pEllipticFunction->alpha2(); }
308
309 //*****************************************************************************
get()310 double EllipticFunction::alphap2::get()
311 { return m_pEllipticFunction->alpha2(); }
312