25 AuxLatitude::AuxLatitude(real a, real f)
26 : tol_( sqrt(numeric_limits<real>::epsilon()) )
27 , bmin_( log2(numeric_limits<real>::min()) )
28 , bmax_( log2(numeric_limits<real>::max()) )
33 , _e2( _f * (2 - _f) )
34 , _e2m1( _fm1 * _fm1 )
35 , _e12( _e2/(1 - _e2) )
38 , _e( sqrt(fabs(_e2)) )
39 , _e1( sqrt(fabs(_e12)) )
41 , _q( _e12p1 + (_f == 0 ? 1 : (_f > 0 ? asinh(_e1) : atan(_e)) / _e) )
43 if (!(isfinite(_a) && _a > 0))
45 if (!(isfinite(_b) && _b > 0))
48 numeric_limits<real>::quiet_NaN());
52 AuxLatitude::AuxLatitude(
const pair<real, real>& axes)
53 : tol_( sqrt(numeric_limits<
real>::epsilon()) )
54 , bmin_( log2(numeric_limits<
real>::min()) )
55 , bmax_( log2(numeric_limits<
real>::max()) )
58 , _f( (_a - _b) / _a )
60 , _e2( ((_a - _b) * (_a + _b)) / (_a * _a) )
61 , _e2m1( (_b * _b) / (_a * _a) )
62 , _e12( ((_a - _b) * (_a + _b)) / (_b * _b) )
63 , _e12p1( (_a * _a) / (_b * _b) )
64 , _n( (_a - _b) / (_a + _b) )
65 , _e( sqrt(fabs(_a - _b) * (_a + _b)) / _a )
66 , _e1( sqrt(fabs(_a - _b) * (_a + _b)) / _b )
68 , _q( _e12p1 + (_f == 0 ? 1 : (_f > 0 ? asinh(_e1) : atan(_e)) / _e) )
70 if (!(isfinite(_a) && _a > 0))
72 if (!(isfinite(_b) && _b > 0))
75 numeric_limits<real>::quiet_NaN());
85 if (diff) *diff = _fm1;
90 if (diff) *diff = _e2m1;
97 real sbeta = fabs(beta.
y()), cbeta = fabs(beta.
x());
98 real a = 1, b = _fm1, ka = _e2, kb = -_e12, ka1 = _e2m1, kb1 = _e12p1,
101 swap(a, b); swap(ka, kb); swap(ka1, kb1); swap(sbeta, cbeta);
113 da2 = ka1 + ka * sb2,
120 + ka * sbeta / sqrt(da2) );
126 if (_f < 0) { swap(smu, cmu); swap(a, b); }
132 cmu = mu.
x(); cbeta = beta.
x();
133 *diff = _fm1 * b/mr *
Math::sq(cbeta / cmu) * (cbeta / cphi);
142 real tphi = fabs(phi.
tan()), tchi = tphi;
143 if ( !( !isfinite(tphi) || tphi == 0 || _f == 0 ) ) {
144 real scphi = sc(tphi),
145 sig = sinh(_e2 * atanhee(tphi) ),
148 tchi = tphi * scsig - sig * scphi;
156 real sigtphi = sig / tphi, tphimsig;
158 tphimsig = tphi - sig;
169 real em1 = _e2m1 / (1 + _e),
170 atanhs = asinh(tphi),
171 scbeta = sc(_fm1 * tphi),
172 scphibeta = sc(tphi) / scbeta,
173 atanhes = asinh(_e * tphi / scbeta),
174 t1 = (atanhs - _e * atanhes)/2,
175 t2 = asinh(em1 * (tphi * scphibeta)) / em1,
176 Dg = cosh((atanhs + _e * atanhes)/2) * (sinh(t1) / t1)
177 * ((atanhs + atanhes)/2 + (1 + _e)/2 * t2);
180 tchi = tphimsig * (1 + sigtphi) / (scsig + sigtphi * scphi);
189 *diff = _e2m1 * (cbeta / cchi) * (cbeta / cphi);
191 real ss = _f > 0 ? sinh(_e * asinh(_e1)) : sinh(-_e * atan(_e));
192 *diff = _f > 0 ? 1/( sc(ss) + ss ) : sc(ss) - ss;
200 real tphi = fabs(phi.
tan());
202 if ( !( !isfinite(tphi) || tphi == 0 || _f == 0 ) ) {
205 Dqm = (_q + qv) / (1 + fabs(phin.
y()));
206 xi =
AuxAngle( copysign(qv, phi.
y()), phin.
x() * sqrt(Dqp * Dqm) );
211 cxi = xi.normalized().x();
213 (2/_q) *
Math::sq(cbeta / cxi) * (cbeta / cxi) * (cbeta / phin.
x());
215 *diff = _e2m1 * sqrt(_q/2);
223 case GEOGRAPHIC:
if (diff) *diff = 1;
return phi;
break;
230 if (diff) *diff = numeric_limits<real>::quiet_NaN();
238 int n = 0;
if (niter) *niter = n;
248 case AUTHALIC : tphi *= cbrt(_fm1);
break;
253 real tzeta = fabs(zeta.
tan()), ltzeta = log2(tzeta);
254 if (!isfinite(ltzeta))
return zeta;
256 real ltphi = log2(tphi),
257 bmin = fmin(ltphi, bmin_), bmax = fmax(ltphi, bmax_);
258 for (
int sign = 0, osign = 0, ntrip = 0; n < numit_;) {
262 real tzeta1 = zeta1.
tan(), ltzeta1 = log2(tzeta1);
269 else if (tzeta1 > tzeta) {
276 real dltphi = -(ltzeta1 - ltzeta) / diff;
279 if (!(fabs(dltphi) >= tol_)) {
283 tphi -= (zeta1.
tan() - tzeta) / diff;
286 if ((sign * osign < 0 && n - ntrip > 2) ||
287 ltphi >= bmax || ltphi <= bmin) {
289 ltphi = (bmin + bmax) / 2;
293 if (niter) *niter = n;
300 int k = ind(auxout, auxin);
302 if (auxin == auxout)
return zeta;
304 if (auxin < 3 && auxout < 3)
306 return AuxAngle(zeta.
y() * real(pow(_fm1, auxout - auxin)), zeta.
x());
310 if ( isnan(_c[
Lmax * (k + 1) - 1]) ) fillcoeff(auxin, auxout, k);
336#if GEOGRAPHICLIB_AUXLATITUDE_ORDER == 4
337 static const real coeff[] = {1/real(64), 1/real(4), 1};
338#elif GEOGRAPHICLIB_AUXLATITUDE_ORDER == 6
339 static const real coeff[] = {1/real(256), 1/real(64), 1/real(4), 1};
340#elif GEOGRAPHICLIB_AUXLATITUDE_ORDER == 8
341 static const real coeff[] = {
342 25/real(16384), 1/real(256), 1/real(64), 1/real(4), 1
345#error "Unsupported value for GEOGRAPHICLIB_AUXLATITUDE_ORDER"
372#if GEOGRAPHICLIB_AUXLATITUDE_ORDER == 4
373 static const real coeff[] = {
374 4/real(315), 4/real(105), 4/real(15), -1/real(3), 1
376#elif GEOGRAPHICLIB_AUXLATITUDE_ORDER == 6
377 static const real coeff[] = {
378 4/real(1287), 4/real(693), 4/real(315), 4/real(105), 4/real(15),
381#elif GEOGRAPHICLIB_AUXLATITUDE_ORDER == 8
382 static const real coeff[] = {
383 4/real(3315), 4/real(2145), 4/real(1287), 4/real(693), 4/real(315),
384 4/real(105), 4/real(15), -1/real(3), 1
387#error "Unsupported value for GEOGRAPHICLIB_AUXLATITUDE_ORDER"
396 real s = _f <= 0 ? sn(tphi) : sn(_fm1 * tphi);
399 (_f < 0 ? atan( _e * s ) : asinh( _e1 * s )) / _e;
404 real scbeta = sc(_fm1 * tphi);
405 return atanhee(tphi) + (tphi / scbeta) * (sc(tphi) / scbeta);
409 real scphi = sc(tphi), sphi = sn(tphi),
411 d = tphi > 0 ? 1 / (scphi * scphi * (1 + sphi)) : 1 - sphi;
414 return (_q - q(tphi)) / d;
424 real scbeta = sc(_fm1 * tphi);
425 return (_f == 0 ? 1 :
426 (_f > 0 ? asinh(_e1 * d * scphi / scbeta) :
427 atan(_e * d / (1 - _e2 * sphi))) / (_e * d) ) +
429 ((scphi + _e2 * tphi) / (_e2m1 * scbeta)) * (scphi / scbeta) :
430 (1 + _e2 * sphi) / ((1 - _e2 * sphi*sphi) * _e2m1) );
435 void AuxLatitude::fillcoeff(
int auxin,
int auxout,
int k)
const {
436#if GEOGRAPHICLIB_AUXLATITUDE_ORDER == 4
437 static const real coeffs[] = {
541 -40457/
real(2419200),
586 -2917/
real(56700), 4463/
real(90720),
587 331799/
real(7257600),
595 static const int ptrs[] = {
596 0, 0, 6, 12, 18, 28, 38, 44, 44, 50, 56, 66, 76, 82, 88, 88, 94, 104,
597 114, 120, 126, 132, 132, 142, 152, 162, 172, 182, 192, 192, 202, 212,
598 222, 232, 242, 252, 252,
600#elif GEOGRAPHICLIB_AUXLATITUDE_ORDER == 6
601 static const real coeffs[] = {
632 28112932/
real(212837625), 60136/
real(467775), -2582/
real(14175),
634 251310128/
real(638512875), -21016/
real(51975), -11966/
real(14175),
636 -8797648/
real(10945935), -94388/
real(66825), 3802/
real(14175),
638 -1472637812/
real(638512875), 41072/
real(93555), 6059/
real(4725),
639 455935736/
real(638512875), 768272/
real(467775),
640 4210684958LL/
real(1915538625),
671 7947332/
real(212837625), 11824/
real(467775), -1082/
real(14175),
673 39946703/
real(638512875), -16672/
real(155925), -338/
real(2025),
675 -255454/
real(1563705), -101069/
real(467775), 1102/
real(14175),
677 -189032762/
real(638512875), 1786/
real(18711), 3161/
real(18900),
678 80274086/
real(638512875), 88868/
real(467775),
679 880980241/
real(3831077250LL),
710 216932/
real(2627625), 109042/
real(467775), -2102/
real(14175),
712 117952358/
real(638512875), -7256/
real(155925), 934/
real(14175),
714 -7391576/
real(54729675), -25286/
real(66825), 922/
real(14175),
716 -67048172/
real(638512875), 268/
real(18711), 719/
real(4725),
717 46774256/
real(638512875), 14354/
real(467775),
718 253129538/
real(1915538625),
747 6601661/
real(7257600), -179/
real(168), 49561/
real(161280),
748 -3418889/
real(1995840), 34729/
real(80640),
749 212378941/
real(319334400),
751 12674323/
real(851350500), -384229/
real(14968800), -1609/
real(28350),
753 -31621753811LL/
real(1307674368000LL), -431/
real(17325),
755 -32844781/
real(1751349600), 3746047/
real(119750400), 449/
real(28350),
757 10650637121LL/
real(326918592000LL), 629/
real(53460),
758 -40457/
real(2419200),
759 205072597/
real(20432412000LL), -1800439/
real(119750400),
760 -59109051671LL/
real(3923023104000LL),
789 108847/
real(3991680), -4583/
real(161280),
790 -20648693/
real(638668800),
793 -55271278/
real(212837625), 27128/
real(93555), -2312/
real(14175),
795 106691108/
real(638512875), -65864/
real(155925), 6079/
real(14175),
797 5921152/
real(54729675), -14246/
real(467775), 772/
real(14175),
799 75594328/
real(638512875), -5312/
real(467775), -167/
real(9450),
800 2837636/
real(638512875), -248/
real(13365),
801 -34761247/
real(1915538625),
805 -12467764/
real(212837625), -37192/
real(467775), -2482/
real(14175),
807 100320856/
real(1915538625), 54968/
real(467775), -898/
real(14175),
809 -5884124/
real(70945875), 24496/
real(467775), 6007/
real(14175),
810 -839792/
real(19348875), -23356/
real(66825),
811 570284222/
real(1915538625),
817 -661844/
real(1915538625), 7052/
real(467775), 2/
real(14175),
819 1425778/
real(212837625), 934/
real(467775), -797/
real(56700),
820 390088/
real(212837625), -3673/
real(467775),
821 -18623681/
real(3831077250LL),
823 -4286228/
real(42567525), -193082/
real(467775), 778/
real(4725),
825 -61623938/
real(70945875), 92696/
real(467775), 12338/
real(14175),
827 427003576/
real(1915538625), 612536/
real(467775), -1618/
real(14175),
829 427770788/
real(212837625), -8324/
real(66825), -5933/
real(14175),
830 -9153184/
real(70945875), -320044/
real(467775),
831 -1978771378/
real(1915538625),
833 -9292991/
real(302702400), 7764059/
real(239500800), 1297/
real(18900),
835 36019108271LL/
real(871782912000LL), 35474/
real(467775),
837 3026004511LL/
real(30648618000LL), -4306823/
real(59875200),
838 -2917/
real(56700), 4463/
real(90720),
839 -368661577/
real(4036032000LL), -102293/
real(1871100),
840 331799/
real(7257600),
841 -875457073/
real(13621608000LL), 11744233/
real(239500800),
842 453002260127LL/
real(7846046208000LL),
844 2706758/
real(42567525), -55222/
real(93555), 2458/
real(4725),
846 -340492279/
real(212837625), 516944/
real(467775), 3413/
real(14175),
848 4430783356LL/
real(1915538625), 206834/
real(467775), -15958/
real(14175),
850 62016436/
real(70945875), -832976/
real(467775), 16049/
real(28350),
851 -651151712/
real(212837625), 15602/
real(18711),
852 2561772812LL/
real(1915538625),
855 static const int ptrs[] = {
856 0, 0, 12, 24, 36, 57, 78, 90, 90, 102, 114, 135, 156, 168, 180, 180, 192,
857 213, 234, 246, 258, 270, 270, 291, 312, 333, 354, 375, 396, 396, 417,
858 438, 459, 480, 501, 522, 522,
860#elif GEOGRAPHICLIB_AUXLATITUDE_ORDER == 8
861 static const real coeffs[] = {
885 2514467/
real(245760), -15543/
real(2560), 1097/
real(512),
887 -5962461/
real(286720), 293393/
real(61440),
888 6459601/
real(860160),
889 332287993/
real(27525120),
895 -2363828/
real(31185), 98738/
real(14175), 73814/
real(2835),
897 14416399/
real(935550), 11763988/
real(155925), -399572/
real(14175),
899 258316372/
real(1216215), -2046082/
real(31185), -144838/
real(6237),
901 -2155215124LL/
real(14189175), -115444544/
real(2027025),
903 -170079376/
real(1216215), 38341552/
real(675675),
904 1383243703/
real(11351340),
906 -1683291094/
real(37574026875LL), 22947844/
real(1915538625),
907 28112932/
real(212837625), 60136/
real(467775), -2582/
real(14175),
909 -14351220203LL/
real(488462349375LL), 1228352/
real(3007125),
910 251310128/
real(638512875), -21016/
real(51975), -11966/
real(14175),
912 505559334506LL/
real(488462349375LL), 138128272/
real(147349125),
913 -8797648/
real(10945935), -94388/
real(66825), 3802/
real(14175),
915 973080708361LL/
real(488462349375LL), -45079184/
real(29469825),
916 -1472637812/
real(638512875), 41072/
real(93555), 6059/
real(4725),
917 -1385645336626LL/
real(488462349375LL), -550000184/
real(147349125),
918 455935736/
real(638512875), 768272/
real(467775),
919 -2939205114427LL/
real(488462349375LL), 443810768/
real(383107725),
920 4210684958LL/
real(1915538625),
921 101885255158LL/
real(54273594375LL), 387227992/
real(127702575),
922 1392441148867LL/
real(325641566250LL),
947 -28223/
real(18432), 3467/
real(7680),
948 -733437/
real(286720), 38081/
real(61440),
950 109167851/
real(82575360),
958 -637699/
real(85050), 2454416/
real(155925), -49877/
real(14175),
960 48124558/
real(1216215), -20989/
real(2835), -28244/
real(4455),
962 -16969807/
real(1091475), -2471888/
real(184275), 797222/
real(155925),
963 -1238578/
real(42525), 2199332/
real(225225),
964 87600385/
real(4540536),
966 -5946082372LL/
real(488462349375LL), 9708931/
real(1915538625),
967 7947332/
real(212837625), 11824/
real(467775), -1082/
real(14175),
969 190673521/
real(69780335625LL), 164328266/
real(1915538625),
970 39946703/
real(638512875), -16672/
real(155925), -338/
real(2025),
972 86402898356LL/
real(488462349375LL), 236067184/
real(1915538625),
973 -255454/
real(1563705), -101069/
real(467775), 1102/
real(14175),
975 110123070361LL/
real(488462349375LL), -98401826/
real(383107725),
976 -189032762/
real(638512875), 1786/
real(18711), 3161/
real(18900),
977 -200020620676LL/
real(488462349375LL), -802887278/
real(1915538625),
978 80274086/
real(638512875), 88868/
real(467775),
979 -296107325077LL/
real(488462349375LL), 66263486/
real(383107725),
980 880980241/
real(3831077250LL),
981 4433064236LL/
real(18091198125LL), 37151038/
real(127702575),
982 495248998393LL/
real(1302566265000LL),
1006 1155049/
real(737280), -4037/
real(7680), 283/
real(1536),
1007 -19465/
real(18432), 1301/
real(7680),
1008 -442269/
real(286720), 17089/
real(61440),
1009 198115/
real(516096),
1010 48689387/
real(82575360),
1021 -48965632/
real(4729725), -548752/
real(96525), 335882/
real(155925),
1022 -197456/
real(15795), 51368/
real(12285),
1023 1461335/
real(174636),
1025 -230886326/
real(6343666875LL), -189115382/
real(1915538625),
1026 216932/
real(2627625), 109042/
real(467775), -2102/
real(14175),
1028 -11696145869LL/
real(69780335625LL), 288456008/
real(1915538625),
1029 117952358/
real(638512875), -7256/
real(155925), 934/
real(14175),
1031 91546732346LL/
real(488462349375LL), 478700902/
real(1915538625),
1032 -7391576/
real(54729675), -25286/
real(66825), 922/
real(14175),
1034 218929662961LL/
real(488462349375LL), -67330724/
real(383107725),
1035 -67048172/
real(638512875), 268/
real(18711), 719/
real(4725),
1036 -129039188386LL/
real(488462349375LL), -117954842/
real(273648375),
1037 46774256/
real(638512875), 14354/
real(467775),
1038 -178084928947LL/
real(488462349375LL), 2114368/
real(34827975),
1039 253129538/
real(1915538625),
1040 6489189398LL/
real(54273594375LL), 13805944/
real(127702575),
1041 59983985827LL/
real(325641566250LL),
1050 109395/
real(262144),
1066 16617/
real(4096), -6037/
real(6144),
1068 -490925/
real(262144),
1071 -18975107/
real(50803200), 72161/
real(387072), 7891/
real(37800),
1073 148003883/
real(174182400), 13769/
real(28800), -1983433/
real(1935360),
1075 79682431/
real(79833600), -67102379/
real(29030400), 167603/
real(181440),
1077 -40176129013LL/
real(7664025600LL), 97445/
real(49896),
1078 6601661/
real(7257600), -179/
real(168), 49561/
real(161280),
1079 2605413599LL/
real(622702080), 14644087/
real(9123840),
1080 -3418889/
real(1995840), 34729/
real(80640),
1081 175214326799LL/
real(58118860800LL), -30705481/
real(10378368),
1082 212378941/
real(319334400),
1083 -16759934899LL/
real(3113510400LL), 1522256789/
real(1383782400),
1084 1424729850961LL/
real(743921418240LL),
1086 -375027460897LL/
real(125046361440000LL),
1087 7183403063LL/
real(560431872000LL), 12674323/
real(851350500),
1090 30410873385097LL/
real(2000741783040000LL),
1091 1117820213/
real(122594472000LL), -31621753811LL/
real(1307674368000LL),
1093 151567502183LL/
real(17863765920000LL),
1094 -116359346641LL/
real(3923023104000LL), -32844781/
real(1751349600),
1095 3746047/
real(119750400), 449/
real(28350), -1003/
real(45360),
1096 -317251099510901LL/
real(8002967132160000LL), -13060303/
real(766215450),
1097 10650637121LL/
real(326918592000LL), 629/
real(53460),
1098 -40457/
real(2419200),
1099 -2105440822861LL/
real(125046361440000LL),
1100 146875240637LL/
real(3923023104000LL), 205072597/
real(20432412000LL),
1101 -1800439/
real(119750400),
1102 91496147778023LL/
real(2000741783040000LL), 228253559/
real(24518894400LL),
1103 -59109051671LL/
real(3923023104000LL),
1104 126430355893LL/
real(13894040160000LL),
1105 -4255034947LL/
real(261534873600LL),
1106 -791820407649841LL/
real(42682491371520000LL),
1114 -1097407/
real(187110), 1077964/
real(155925), -24832/
real(14175),
1116 -12870194/
real(1216215), 1040/
real(567), 109598/
real(31185),
1118 -126463/
real(72765), -941912/
real(184275), 444337/
real(155925),
1119 3463678/
real(467775), -2405834/
real(675675),
1120 256663081/
real(56756700),
1131 210152/
real(4729725), -31232/
real(2027025), 149/
real(311850),
1132 30208/
real(6081075), -499/
real(225225),
1133 -68251/
real(113513400),
1144 40458083/
real(14189175), -299444/
real(675675), -90263/
real(155925),
1145 -3818498/
real(6081075), -8962/
real(12285),
1146 -4259027/
real(4365900),
1148 -7944359/
real(67737600), 5406467/
real(38707200), -96199/
real(604800),
1150 -24749483/
real(348364800), -51841/
real(1209600), 1118711/
real(3870720),
1152 6457463/
real(17740800), -9261899/
real(58060800), -5569/
real(90720),
1154 -324154477/
real(7664025600LL), -466511/
real(2494800),
1155 830251/
real(7257600), 11/
real(504), -4397/
real(161280),
1156 -22894433/
real(124540416), 8005831/
real(63866880), 108847/
real(3991680),
1158 2204645983LL/
real(12915302400LL), 16363163/
real(518918400),
1159 -20648693/
real(638668800),
1160 497323811/
real(12454041600LL), -219941297/
real(5535129600LL),
1161 -191773887257LL/
real(3719607091200LL),
1164 -17451293242LL/
real(488462349375LL), 308365186/
real(1915538625),
1165 -55271278/
real(212837625), 27128/
real(93555), -2312/
real(14175),
1167 -101520127208LL/
real(488462349375LL), 149984636/
real(1915538625),
1168 106691108/
real(638512875), -65864/
real(155925), 6079/
real(14175),
1170 10010741462LL/
real(37574026875LL), -99534832/
real(383107725),
1171 5921152/
real(54729675), -14246/
real(467775), 772/
real(14175),
1173 1615002539/
real(75148053750LL), -35573728/
real(273648375),
1174 75594328/
real(638512875), -5312/
real(467775), -167/
real(9450),
1175 -3358119706LL/
real(488462349375LL), 130601488/
real(1915538625),
1176 2837636/
real(638512875), -248/
real(13365),
1177 46771947158LL/
real(488462349375LL), -3196/
real(3553875),
1178 -34761247/
real(1915538625),
1179 -18696014/
real(18091198125LL), -2530364/
real(127702575),
1180 -14744861191LL/
real(651283132500LL),
1182 -88002076/
real(13956067125LL), -86728/
real(16372125),
1185 -2641983469LL/
real(488462349375LL), -895712/
real(147349125),
1186 -12467764/
real(212837625), -37192/
real(467775), -2482/
real(14175),
1188 8457703444LL/
real(488462349375LL), 240616/
real(4209975),
1189 100320856/
real(1915538625), 54968/
real(467775), -898/
real(14175),
1191 -4910552477LL/
real(97692469875LL), -4832848/
real(147349125),
1192 -5884124/
real(70945875), 24496/
real(467775), 6007/
real(14175),
1193 9393713176LL/
real(488462349375LL), 816824/
real(13395375),
1194 -839792/
real(19348875), -23356/
real(66825),
1195 -4532926649LL/
real(97692469875LL), 1980656/
real(54729675),
1196 570284222/
real(1915538625),
1197 -14848113968LL/
real(488462349375LL), -496894276/
real(1915538625),
1198 224557742191LL/
real(976924698750LL),
1200 29232878/
real(97692469875LL), -18484/
real(4343625), -70496/
real(8513505),
1202 -324943819/
real(488462349375LL), -4160804/
real(1915538625),
1205 -168643106/
real(488462349375LL), 237052/
real(383107725),
1206 -661844/
real(1915538625), 7052/
real(467775), 2/
real(14175),
1208 113042383/
real(97692469875LL), -2915326/
real(1915538625),
1209 1425778/
real(212837625), 934/
real(467775), -797/
real(56700),
1210 -558526274/
real(488462349375LL), 6064888/
real(1915538625),
1211 390088/
real(212837625), -3673/
real(467775),
1212 155665021/
real(97692469875LL), 41288/
real(29469825),
1213 -18623681/
real(3831077250LL),
1214 504234982/
real(488462349375LL), -6205669/
real(1915538625),
1215 -8913001661LL/
real(3907698795000LL),
1217 182466964/
real(8881133625LL), 53702182/
real(212837625),
1218 -4286228/
real(42567525), -193082/
real(467775), 778/
real(4725),
1220 367082779691LL/
real(488462349375LL), -32500616/
real(273648375),
1221 -61623938/
real(70945875), 92696/
real(467775), 12338/
real(14175),
1223 -42668482796LL/
real(488462349375LL), -663111728/
real(383107725),
1224 427003576/
real(1915538625), 612536/
real(467775), -1618/
real(14175),
1226 -327791986997LL/
real(97692469875LL), 421877252/
real(1915538625),
1227 427770788/
real(212837625), -8324/
real(66825), -5933/
real(14175),
1228 74612072536LL/
real(488462349375LL), 6024982024LL/
real(1915538625),
1229 -9153184/
real(70945875), -320044/
real(467775),
1230 489898512247LL/
real(97692469875LL), -46140784/
real(383107725),
1231 -1978771378/
real(1915538625),
1232 -42056042768LL/
real(488462349375LL), -2926201612LL/
real(1915538625),
1233 -2209250801969LL/
real(976924698750LL),
1235 39534358147LL/
real(2858202547200LL),
1236 -25359310709LL/
real(1743565824000LL), -9292991/
real(302702400),
1239 -13216941177599LL/
real(571640509440000LL),
1240 -14814966289LL/
real(245188944000LL), 36019108271LL/
real(871782912000LL),
1242 -27782109847927LL/
real(250092722880000LL),
1243 99871724539LL/
real(1569209241600LL), 3026004511LL/
real(30648618000LL),
1244 -4306823/
real(59875200), -2917/
real(56700), 4463/
real(90720),
1245 168979300892599LL/
real(1600593426432000LL),
1246 2123926699/
real(15324309000LL), -368661577/
real(4036032000LL),
1247 -102293/
real(1871100), 331799/
real(7257600),
1248 1959350112697LL/
real(9618950880000LL),
1249 -493031379277LL/
real(3923023104000LL), -875457073/
real(13621608000LL),
1250 11744233/
real(239500800),
1251 -145659994071373LL/
real(800296713216000LL),
1252 -793693009/
real(9807557760LL), 453002260127LL/
real(7846046208000LL),
1253 -53583096419057LL/
real(500185445760000LL),
1254 103558761539LL/
real(1426553856000LL),
1255 real(12272105438887727LL)/
real(128047474114560000LL),
1257 -64724382148LL/
real(97692469875LL), 16676974/
real(30405375),
1258 2706758/
real(42567525), -55222/
real(93555), 2458/
real(4725),
1260 85904355287LL/
real(37574026875LL), 158999572/
real(1915538625),
1261 -340492279/
real(212837625), 516944/
real(467775), 3413/
real(14175),
1263 2986003168LL/
real(37574026875LL), -7597644214LL/
real(1915538625),
1264 4430783356LL/
real(1915538625), 206834/
real(467775), -15958/
real(14175),
1266 -375566203/
real(39037950), 851209552/
real(174139875),
1267 62016436/
real(70945875), -832976/
real(467775), 16049/
real(28350),
1268 5106181018156LL/
real(488462349375LL), 3475643362LL/
real(1915538625),
1269 -651151712/
real(212837625), 15602/
real(18711),
1270 34581190223LL/
real(8881133625LL), -10656173804LL/
real(1915538625),
1271 2561772812LL/
real(1915538625),
1272 -5150169424688LL/
real(488462349375LL), 873037408/
real(383107725),
1273 7939103697617LL/
real(1953849397500LL),
1276 static const int ptrs[] = {
1277 0, 0, 20, 40, 60, 96, 132, 152, 152, 172, 192, 228, 264, 284, 304, 304,
1278 324, 360, 396, 416, 436, 456, 456, 492, 528, 564, 600, 636, 672, 672,
1279 708, 744, 780, 816, 852, 888, 888,
1282#error "Unsupported value for GEOGRAPHICLIB_AUXLATITUDE_ORDER"
1286 "Mismatch in size of ptrs array");
1287 static_assert(
sizeof(coeffs) /
sizeof(
real) ==
1292 "Mismatch in size of coeffs array");
1295 if (auxout == auxin)
1296 fill(_c +
Lmax * k, _c +
Lmax * (k + 1), 0);
1301 for (
int l = 0; l <
Lmax; ++l) {
1302 int m = (
Lmax - l - 1) / 2;
1308 for (
int l = 0; l <
Lmax; ++l) {
1309 int m = (
Lmax - l - 1);
1320 const real c[],
int K) {
1326 real u0 = 0, u1 = 0,
1327 x = 2 * (czeta - szeta) * (czeta + szeta);
1329 real t = x * u0 - u1 + c[--k];
1335 real f0 = sinp ? 2 * szeta * czeta : x / 2, fm1 = sinp ? 0 : 1;
1336 return f0 * u0 - fm1 * u1;
Header for the GeographicLib::AuxLatitude class.
Header for GeographicLib::EllipticFunction class.
GeographicLib::Math::real real
An accurate representation of angles.
Math::real radians() const
AuxAngle normalized() const
Math::real degrees() const
AuxAngle copyquadrant(const AuxAngle &p) const
Conversions between auxiliary latitudes.
AuxAngle Conformal(const AuxAngle &phi, real *diff=nullptr) const
AuxAngle Convert(int auxin, int auxout, const AuxAngle &zeta, bool exact=false) const
Math::real AuthalicRadiusSquared(bool exact=false) const
AuxAngle FromAuxiliary(int auxin, const AuxAngle &zeta, int *niter=nullptr) const
AuxAngle ToAuxiliary(int auxout, const AuxAngle &phi, real *diff=nullptr) const
Math::real RectifyingRadius(bool exact=false) const
AuxAngle Authalic(const AuxAngle &phi, real *diff=nullptr) const
AuxAngle Geocentric(const AuxAngle &phi, real *diff=nullptr) const
AuxAngle Parametric(const AuxAngle &phi, real *diff=nullptr) const
static Math::real Clenshaw(bool sinp, real szeta, real czeta, const real c[], int K)
static const AuxLatitude & WGS84()
AuxAngle Rectifying(const AuxAngle &phi, real *diff=nullptr) const
static real RG(real x, real y, real z)
static real RD(real x, real y, real z)
static real RF(real x, real y, real z)
Exception handling for GeographicLib.
static constexpr int td
degrees per turn
static T polyval(int N, const T p[], T x)
Namespace for GeographicLib.