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;
96 real sbeta = fabs(beta.
y()), cbeta = fabs(beta.
x());
97 real a = 1, b = _fm1, ka = _e2, kb = -_e12, ka1 = _e2m1, kb1 = _e12p1,
112 da2 = ka1 + ka * sb2,
119 + ka * sbeta / sqrt(da2) );
125 if (_f < 0) {
swap(smu, cmu);
swap(a, b); }
131 cmu = mu.
x(); cbeta = beta.
x();
132 *diff = _fm1 * b/mr *
Math::sq(cbeta / cmu) * (cbeta / cphi);
140 real tphi = fabs(phi.
tan()), tchi = tphi;
141 if ( !( !isfinite(tphi) || tphi == 0 || _f == 0 ) ) {
142 real scphi = sc(tphi),
143 sig = sinh(_e2 * atanhee(tphi) ),
146 tchi = tphi * scsig - sig * scphi;
154 real sigtphi = sig / tphi, tphimsig;
156 tphimsig = tphi - sig;
167 real em1 = _e2m1 / (1 + _e),
168 atanhs = asinh(tphi),
169 scbeta = sc(_fm1 * tphi),
170 scphibeta = sc(tphi) / scbeta,
171 atanhes = asinh(_e * tphi / scbeta),
172 t1 = (atanhs - _e * atanhes)/2,
173 t2 = asinh(em1 * (tphi * scphibeta)) / em1,
174 Dg = cosh((atanhs + _e * atanhes)/2) * (sinh(t1) / t1)
175 * ((atanhs + atanhes)/2 + (1 + _e)/2 * t2);
178 tchi = tphimsig * (1 + sigtphi) / (scsig + sigtphi * scphi);
187 *diff = _e2m1 * (cbeta / cchi) * (cbeta / cphi);
189 real ss = _f > 0 ? sinh(_e * asinh(_e1)) : sinh(-_e * atan(_e));
190 *diff = _f > 0 ? 1/( sc(ss) + ss ) : sc(ss) - ss;
197 real tphi = fabs(phi.
tan());
199 if ( !( !isfinite(tphi) || tphi == 0 || _f == 0 ) ) {
202 Dqm = (_q + qv) / (1 + fabs(phin.
y()));
203 xi =
AuxAngle( copysign(qv, phi.
y()), phin.
x() * sqrt(Dqp * Dqm) );
208 cxi = xi.normalized().x();
210 (2/_q) *
Math::sq(cbeta / cxi) * (cbeta / cxi) * (cbeta / phin.
x());
212 *diff = _e2m1 * sqrt(_q/2);
220 case GEOGRAPHIC:
if (diff) *diff = 1;
return phi;
break;
227 if (diff) *diff = numeric_limits<real>::quiet_NaN();
235 int n = 0;
if (niter) *niter = n;
245 case AUTHALIC : tphi *= cbrt(_fm1);
break;
250 real tzeta = fabs(zeta.
tan()), ltzeta = log2(tzeta);
251 if (!isfinite(ltzeta))
return zeta;
253 real ltphi = log2(tphi),
254 bmin = fmin(ltphi, bmin_), bmax = fmax(ltphi, bmax_);
255 for (
int sign = 0, osign = 0, ntrip = 0; n < numit_;) {
259 real tzeta1 = zeta1.
tan(), ltzeta1 = log2(tzeta1);
266 else if (tzeta1 > tzeta) {
273 real dltphi = -(ltzeta1 - ltzeta) / diff;
276 if (!(fabs(dltphi) >= tol_)) {
280 tphi -= (zeta1.
tan() - tzeta) / diff;
283 if ((sign * osign < 0 && n - ntrip > 2) ||
284 ltphi >= bmax || ltphi <= bmin) {
286 ltphi = (bmin + bmax) / 2;
290 if (niter) *niter = n;
296 int k = ind(auxout, auxin);
298 if (auxin == auxout)
return zeta;
300 if (auxin < 3 && auxout < 3)
302 return AuxAngle(zeta.
y() * real(pow(_fm1, auxout - auxin)), zeta.
x());
306 if ( isnan(_c[
Lmax * (k + 1) - 1]) ) fillcoeff(auxin, auxout, k);
332#if GEOGRAPHICLIB_AUXLATITUDE_ORDER == 4
333 static const real coeff[] = {1/
real(64), 1/
real(4), 1};
334#elif GEOGRAPHICLIB_AUXLATITUDE_ORDER == 6
335 static const real coeff[] = {1/
real(256), 1/
real(64), 1/
real(4), 1};
336#elif GEOGRAPHICLIB_AUXLATITUDE_ORDER == 8
337 static const real coeff[] = {
341#error "Unsupported value for GEOGRAPHICLIB_AUXLATITUDE_ORDER"
368#if GEOGRAPHICLIB_AUXLATITUDE_ORDER == 4
369 static const real coeff[] = {
372#elif GEOGRAPHICLIB_AUXLATITUDE_ORDER == 6
373 static const real coeff[] = {
377#elif GEOGRAPHICLIB_AUXLATITUDE_ORDER == 8
378 static const real coeff[] = {
383#error "Unsupported value for GEOGRAPHICLIB_AUXLATITUDE_ORDER"
392 real s = _f <= 0 ? sn(tphi) : sn(_fm1 * tphi);
395 (_f < 0 ? atan( _e * s ) : asinh( _e1 * s )) / _e;
400 real scbeta = sc(_fm1 * tphi);
401 return atanhee(tphi) + (tphi / scbeta) * (sc(tphi) / scbeta);
405 real scphi = sc(tphi), sphi = sn(tphi),
407 d = tphi > 0 ? 1 / (scphi * scphi * (1 + sphi)) : 1 - sphi;
410 return (_q - q(tphi)) / d;
420 real scbeta = sc(_fm1 * tphi);
421 return (_f == 0 ? 1 :
422 (_f > 0 ? asinh(_e1 * d * scphi / scbeta) :
423 atan(_e * d / (1 - _e2 * sphi))) / (_e * d) ) +
425 ((scphi + _e2 * tphi) / (_e2m1 * scbeta)) * (scphi / scbeta) :
426 (1 + _e2 * sphi) / ((1 - _e2 * sphi*sphi) * _e2m1) );
431 void AuxLatitude::fillcoeff(
int auxin,
int auxout,
int k)
const {
432#if GEOGRAPHICLIB_AUXLATITUDE_ORDER == 4
433 static const real coeffs[] = {
537 -40457/
real(2419200),
582 -2917/
real(56700), 4463/
real(90720),
583 331799/
real(7257600),
591 static const int ptrs[] = {
592 0, 0, 6, 12, 18, 28, 38, 44, 44, 50, 56, 66, 76, 82, 88, 88, 94, 104,
593 114, 120, 126, 132, 132, 142, 152, 162, 172, 182, 192, 192, 202, 212,
594 222, 232, 242, 252, 252,
596#elif GEOGRAPHICLIB_AUXLATITUDE_ORDER == 6
597 static const real coeffs[] = {
628 28112932/
real(212837625), 60136/
real(467775), -2582/
real(14175),
630 251310128/
real(638512875), -21016/
real(51975), -11966/
real(14175),
632 -8797648/
real(10945935), -94388/
real(66825), 3802/
real(14175),
634 -1472637812/
real(638512875), 41072/
real(93555), 6059/
real(4725),
635 455935736/
real(638512875), 768272/
real(467775),
636 4210684958LL/
real(1915538625),
667 7947332/
real(212837625), 11824/
real(467775), -1082/
real(14175),
669 39946703/
real(638512875), -16672/
real(155925), -338/
real(2025),
671 -255454/
real(1563705), -101069/
real(467775), 1102/
real(14175),
673 -189032762/
real(638512875), 1786/
real(18711), 3161/
real(18900),
674 80274086/
real(638512875), 88868/
real(467775),
675 880980241/
real(3831077250LL),
706 216932/
real(2627625), 109042/
real(467775), -2102/
real(14175),
708 117952358/
real(638512875), -7256/
real(155925), 934/
real(14175),
710 -7391576/
real(54729675), -25286/
real(66825), 922/
real(14175),
712 -67048172/
real(638512875), 268/
real(18711), 719/
real(4725),
713 46774256/
real(638512875), 14354/
real(467775),
714 253129538/
real(1915538625),
743 6601661/
real(7257600), -179/
real(168), 49561/
real(161280),
744 -3418889/
real(1995840), 34729/
real(80640),
745 212378941/
real(319334400),
747 12674323/
real(851350500), -384229/
real(14968800), -1609/
real(28350),
749 -31621753811LL/
real(1307674368000LL), -431/
real(17325),
751 -32844781/
real(1751349600), 3746047/
real(119750400), 449/
real(28350),
753 10650637121LL/
real(326918592000LL), 629/
real(53460),
754 -40457/
real(2419200),
755 205072597/
real(20432412000LL), -1800439/
real(119750400),
756 -59109051671LL/
real(3923023104000LL),
785 108847/
real(3991680), -4583/
real(161280),
786 -20648693/
real(638668800),
789 -55271278/
real(212837625), 27128/
real(93555), -2312/
real(14175),
791 106691108/
real(638512875), -65864/
real(155925), 6079/
real(14175),
793 5921152/
real(54729675), -14246/
real(467775), 772/
real(14175),
795 75594328/
real(638512875), -5312/
real(467775), -167/
real(9450),
796 2837636/
real(638512875), -248/
real(13365),
797 -34761247/
real(1915538625),
801 -12467764/
real(212837625), -37192/
real(467775), -2482/
real(14175),
803 100320856/
real(1915538625), 54968/
real(467775), -898/
real(14175),
805 -5884124/
real(70945875), 24496/
real(467775), 6007/
real(14175),
806 -839792/
real(19348875), -23356/
real(66825),
807 570284222/
real(1915538625),
813 -661844/
real(1915538625), 7052/
real(467775), 2/
real(14175),
815 1425778/
real(212837625), 934/
real(467775), -797/
real(56700),
816 390088/
real(212837625), -3673/
real(467775),
817 -18623681/
real(3831077250LL),
819 -4286228/
real(42567525), -193082/
real(467775), 778/
real(4725),
821 -61623938/
real(70945875), 92696/
real(467775), 12338/
real(14175),
823 427003576/
real(1915538625), 612536/
real(467775), -1618/
real(14175),
825 427770788/
real(212837625), -8324/
real(66825), -5933/
real(14175),
826 -9153184/
real(70945875), -320044/
real(467775),
827 -1978771378/
real(1915538625),
829 -9292991/
real(302702400), 7764059/
real(239500800), 1297/
real(18900),
831 36019108271LL/
real(871782912000LL), 35474/
real(467775),
833 3026004511LL/
real(30648618000LL), -4306823/
real(59875200),
834 -2917/
real(56700), 4463/
real(90720),
835 -368661577/
real(4036032000LL), -102293/
real(1871100),
836 331799/
real(7257600),
837 -875457073/
real(13621608000LL), 11744233/
real(239500800),
838 453002260127LL/
real(7846046208000LL),
840 2706758/
real(42567525), -55222/
real(93555), 2458/
real(4725),
842 -340492279/
real(212837625), 516944/
real(467775), 3413/
real(14175),
844 4430783356LL/
real(1915538625), 206834/
real(467775), -15958/
real(14175),
846 62016436/
real(70945875), -832976/
real(467775), 16049/
real(28350),
847 -651151712/
real(212837625), 15602/
real(18711),
848 2561772812LL/
real(1915538625),
851 static const int ptrs[] = {
852 0, 0, 12, 24, 36, 57, 78, 90, 90, 102, 114, 135, 156, 168, 180, 180, 192,
853 213, 234, 246, 258, 270, 270, 291, 312, 333, 354, 375, 396, 396, 417,
854 438, 459, 480, 501, 522, 522,
856#elif GEOGRAPHICLIB_AUXLATITUDE_ORDER == 8
857 static const real coeffs[] = {
881 2514467/
real(245760), -15543/
real(2560), 1097/
real(512),
883 -5962461/
real(286720), 293393/
real(61440),
884 6459601/
real(860160),
885 332287993/
real(27525120),
891 -2363828/
real(31185), 98738/
real(14175), 73814/
real(2835),
893 14416399/
real(935550), 11763988/
real(155925), -399572/
real(14175),
895 258316372/
real(1216215), -2046082/
real(31185), -144838/
real(6237),
897 -2155215124LL/
real(14189175), -115444544/
real(2027025),
899 -170079376/
real(1216215), 38341552/
real(675675),
900 1383243703/
real(11351340),
902 -1683291094/
real(37574026875LL), 22947844/
real(1915538625),
903 28112932/
real(212837625), 60136/
real(467775), -2582/
real(14175),
905 -14351220203LL/
real(488462349375LL), 1228352/
real(3007125),
906 251310128/
real(638512875), -21016/
real(51975), -11966/
real(14175),
908 505559334506LL/
real(488462349375LL), 138128272/
real(147349125),
909 -8797648/
real(10945935), -94388/
real(66825), 3802/
real(14175),
911 973080708361LL/
real(488462349375LL), -45079184/
real(29469825),
912 -1472637812/
real(638512875), 41072/
real(93555), 6059/
real(4725),
913 -1385645336626LL/
real(488462349375LL), -550000184/
real(147349125),
914 455935736/
real(638512875), 768272/
real(467775),
915 -2939205114427LL/
real(488462349375LL), 443810768/
real(383107725),
916 4210684958LL/
real(1915538625),
917 101885255158LL/
real(54273594375LL), 387227992/
real(127702575),
918 1392441148867LL/
real(325641566250LL),
943 -28223/
real(18432), 3467/
real(7680),
944 -733437/
real(286720), 38081/
real(61440),
946 109167851/
real(82575360),
954 -637699/
real(85050), 2454416/
real(155925), -49877/
real(14175),
956 48124558/
real(1216215), -20989/
real(2835), -28244/
real(4455),
958 -16969807/
real(1091475), -2471888/
real(184275), 797222/
real(155925),
959 -1238578/
real(42525), 2199332/
real(225225),
960 87600385/
real(4540536),
962 -5946082372LL/
real(488462349375LL), 9708931/
real(1915538625),
963 7947332/
real(212837625), 11824/
real(467775), -1082/
real(14175),
965 190673521/
real(69780335625LL), 164328266/
real(1915538625),
966 39946703/
real(638512875), -16672/
real(155925), -338/
real(2025),
968 86402898356LL/
real(488462349375LL), 236067184/
real(1915538625),
969 -255454/
real(1563705), -101069/
real(467775), 1102/
real(14175),
971 110123070361LL/
real(488462349375LL), -98401826/
real(383107725),
972 -189032762/
real(638512875), 1786/
real(18711), 3161/
real(18900),
973 -200020620676LL/
real(488462349375LL), -802887278/
real(1915538625),
974 80274086/
real(638512875), 88868/
real(467775),
975 -296107325077LL/
real(488462349375LL), 66263486/
real(383107725),
976 880980241/
real(3831077250LL),
977 4433064236LL/
real(18091198125LL), 37151038/
real(127702575),
978 495248998393LL/
real(1302566265000LL),
1002 1155049/
real(737280), -4037/
real(7680), 283/
real(1536),
1003 -19465/
real(18432), 1301/
real(7680),
1004 -442269/
real(286720), 17089/
real(61440),
1005 198115/
real(516096),
1006 48689387/
real(82575360),
1017 -48965632/
real(4729725), -548752/
real(96525), 335882/
real(155925),
1018 -197456/
real(15795), 51368/
real(12285),
1019 1461335/
real(174636),
1021 -230886326/
real(6343666875LL), -189115382/
real(1915538625),
1022 216932/
real(2627625), 109042/
real(467775), -2102/
real(14175),
1024 -11696145869LL/
real(69780335625LL), 288456008/
real(1915538625),
1025 117952358/
real(638512875), -7256/
real(155925), 934/
real(14175),
1027 91546732346LL/
real(488462349375LL), 478700902/
real(1915538625),
1028 -7391576/
real(54729675), -25286/
real(66825), 922/
real(14175),
1030 218929662961LL/
real(488462349375LL), -67330724/
real(383107725),
1031 -67048172/
real(638512875), 268/
real(18711), 719/
real(4725),
1032 -129039188386LL/
real(488462349375LL), -117954842/
real(273648375),
1033 46774256/
real(638512875), 14354/
real(467775),
1034 -178084928947LL/
real(488462349375LL), 2114368/
real(34827975),
1035 253129538/
real(1915538625),
1036 6489189398LL/
real(54273594375LL), 13805944/
real(127702575),
1037 59983985827LL/
real(325641566250LL),
1046 109395/
real(262144),
1062 16617/
real(4096), -6037/
real(6144),
1064 -490925/
real(262144),
1067 -18975107/
real(50803200), 72161/
real(387072), 7891/
real(37800),
1069 148003883/
real(174182400), 13769/
real(28800), -1983433/
real(1935360),
1071 79682431/
real(79833600), -67102379/
real(29030400), 167603/
real(181440),
1073 -40176129013LL/
real(7664025600LL), 97445/
real(49896),
1074 6601661/
real(7257600), -179/
real(168), 49561/
real(161280),
1075 2605413599LL/
real(622702080), 14644087/
real(9123840),
1076 -3418889/
real(1995840), 34729/
real(80640),
1077 175214326799LL/
real(58118860800LL), -30705481/
real(10378368),
1078 212378941/
real(319334400),
1079 -16759934899LL/
real(3113510400LL), 1522256789/
real(1383782400),
1080 1424729850961LL/
real(743921418240LL),
1082 -375027460897LL/
real(125046361440000LL),
1083 7183403063LL/
real(560431872000LL), 12674323/
real(851350500),
1086 30410873385097LL/
real(2000741783040000LL),
1087 1117820213/
real(122594472000LL), -31621753811LL/
real(1307674368000LL),
1089 151567502183LL/
real(17863765920000LL),
1090 -116359346641LL/
real(3923023104000LL), -32844781/
real(1751349600),
1091 3746047/
real(119750400), 449/
real(28350), -1003/
real(45360),
1092 -317251099510901LL/
real(8002967132160000LL), -13060303/
real(766215450),
1093 10650637121LL/
real(326918592000LL), 629/
real(53460),
1094 -40457/
real(2419200),
1095 -2105440822861LL/
real(125046361440000LL),
1096 146875240637LL/
real(3923023104000LL), 205072597/
real(20432412000LL),
1097 -1800439/
real(119750400),
1098 91496147778023LL/
real(2000741783040000LL), 228253559/
real(24518894400LL),
1099 -59109051671LL/
real(3923023104000LL),
1100 126430355893LL/
real(13894040160000LL),
1101 -4255034947LL/
real(261534873600LL),
1102 -791820407649841LL/
real(42682491371520000LL),
1110 -1097407/
real(187110), 1077964/
real(155925), -24832/
real(14175),
1112 -12870194/
real(1216215), 1040/
real(567), 109598/
real(31185),
1114 -126463/
real(72765), -941912/
real(184275), 444337/
real(155925),
1115 3463678/
real(467775), -2405834/
real(675675),
1116 256663081/
real(56756700),
1127 210152/
real(4729725), -31232/
real(2027025), 149/
real(311850),
1128 30208/
real(6081075), -499/
real(225225),
1129 -68251/
real(113513400),
1140 40458083/
real(14189175), -299444/
real(675675), -90263/
real(155925),
1141 -3818498/
real(6081075), -8962/
real(12285),
1142 -4259027/
real(4365900),
1144 -7944359/
real(67737600), 5406467/
real(38707200), -96199/
real(604800),
1146 -24749483/
real(348364800), -51841/
real(1209600), 1118711/
real(3870720),
1148 6457463/
real(17740800), -9261899/
real(58060800), -5569/
real(90720),
1150 -324154477/
real(7664025600LL), -466511/
real(2494800),
1151 830251/
real(7257600), 11/
real(504), -4397/
real(161280),
1152 -22894433/
real(124540416), 8005831/
real(63866880), 108847/
real(3991680),
1154 2204645983LL/
real(12915302400LL), 16363163/
real(518918400),
1155 -20648693/
real(638668800),
1156 497323811/
real(12454041600LL), -219941297/
real(5535129600LL),
1157 -191773887257LL/
real(3719607091200LL),
1160 -17451293242LL/
real(488462349375LL), 308365186/
real(1915538625),
1161 -55271278/
real(212837625), 27128/
real(93555), -2312/
real(14175),
1163 -101520127208LL/
real(488462349375LL), 149984636/
real(1915538625),
1164 106691108/
real(638512875), -65864/
real(155925), 6079/
real(14175),
1166 10010741462LL/
real(37574026875LL), -99534832/
real(383107725),
1167 5921152/
real(54729675), -14246/
real(467775), 772/
real(14175),
1169 1615002539/
real(75148053750LL), -35573728/
real(273648375),
1170 75594328/
real(638512875), -5312/
real(467775), -167/
real(9450),
1171 -3358119706LL/
real(488462349375LL), 130601488/
real(1915538625),
1172 2837636/
real(638512875), -248/
real(13365),
1173 46771947158LL/
real(488462349375LL), -3196/
real(3553875),
1174 -34761247/
real(1915538625),
1175 -18696014/
real(18091198125LL), -2530364/
real(127702575),
1176 -14744861191LL/
real(651283132500LL),
1178 -88002076/
real(13956067125LL), -86728/
real(16372125),
1181 -2641983469LL/
real(488462349375LL), -895712/
real(147349125),
1182 -12467764/
real(212837625), -37192/
real(467775), -2482/
real(14175),
1184 8457703444LL/
real(488462349375LL), 240616/
real(4209975),
1185 100320856/
real(1915538625), 54968/
real(467775), -898/
real(14175),
1187 -4910552477LL/
real(97692469875LL), -4832848/
real(147349125),
1188 -5884124/
real(70945875), 24496/
real(467775), 6007/
real(14175),
1189 9393713176LL/
real(488462349375LL), 816824/
real(13395375),
1190 -839792/
real(19348875), -23356/
real(66825),
1191 -4532926649LL/
real(97692469875LL), 1980656/
real(54729675),
1192 570284222/
real(1915538625),
1193 -14848113968LL/
real(488462349375LL), -496894276/
real(1915538625),
1194 224557742191LL/
real(976924698750LL),
1196 29232878/
real(97692469875LL), -18484/
real(4343625), -70496/
real(8513505),
1198 -324943819/
real(488462349375LL), -4160804/
real(1915538625),
1201 -168643106/
real(488462349375LL), 237052/
real(383107725),
1202 -661844/
real(1915538625), 7052/
real(467775), 2/
real(14175),
1204 113042383/
real(97692469875LL), -2915326/
real(1915538625),
1205 1425778/
real(212837625), 934/
real(467775), -797/
real(56700),
1206 -558526274/
real(488462349375LL), 6064888/
real(1915538625),
1207 390088/
real(212837625), -3673/
real(467775),
1208 155665021/
real(97692469875LL), 41288/
real(29469825),
1209 -18623681/
real(3831077250LL),
1210 504234982/
real(488462349375LL), -6205669/
real(1915538625),
1211 -8913001661LL/
real(3907698795000LL),
1213 182466964/
real(8881133625LL), 53702182/
real(212837625),
1214 -4286228/
real(42567525), -193082/
real(467775), 778/
real(4725),
1216 367082779691LL/
real(488462349375LL), -32500616/
real(273648375),
1217 -61623938/
real(70945875), 92696/
real(467775), 12338/
real(14175),
1219 -42668482796LL/
real(488462349375LL), -663111728/
real(383107725),
1220 427003576/
real(1915538625), 612536/
real(467775), -1618/
real(14175),
1222 -327791986997LL/
real(97692469875LL), 421877252/
real(1915538625),
1223 427770788/
real(212837625), -8324/
real(66825), -5933/
real(14175),
1224 74612072536LL/
real(488462349375LL), 6024982024LL/
real(1915538625),
1225 -9153184/
real(70945875), -320044/
real(467775),
1226 489898512247LL/
real(97692469875LL), -46140784/
real(383107725),
1227 -1978771378/
real(1915538625),
1228 -42056042768LL/
real(488462349375LL), -2926201612LL/
real(1915538625),
1229 -2209250801969LL/
real(976924698750LL),
1231 39534358147LL/
real(2858202547200LL),
1232 -25359310709LL/
real(1743565824000LL), -9292991/
real(302702400),
1235 -13216941177599LL/
real(571640509440000LL),
1236 -14814966289LL/
real(245188944000LL), 36019108271LL/
real(871782912000LL),
1238 -27782109847927LL/
real(250092722880000LL),
1239 99871724539LL/
real(1569209241600LL), 3026004511LL/
real(30648618000LL),
1240 -4306823/
real(59875200), -2917/
real(56700), 4463/
real(90720),
1241 168979300892599LL/
real(1600593426432000LL),
1242 2123926699/
real(15324309000LL), -368661577/
real(4036032000LL),
1243 -102293/
real(1871100), 331799/
real(7257600),
1244 1959350112697LL/
real(9618950880000LL),
1245 -493031379277LL/
real(3923023104000LL), -875457073/
real(13621608000LL),
1246 11744233/
real(239500800),
1247 -145659994071373LL/
real(800296713216000LL),
1248 -793693009/
real(9807557760LL), 453002260127LL/
real(7846046208000LL),
1249 -53583096419057LL/
real(500185445760000LL),
1250 103558761539LL/
real(1426553856000LL),
1251 real(12272105438887727LL)/
real(128047474114560000LL),
1253 -64724382148LL/
real(97692469875LL), 16676974/
real(30405375),
1254 2706758/
real(42567525), -55222/
real(93555), 2458/
real(4725),
1256 85904355287LL/
real(37574026875LL), 158999572/
real(1915538625),
1257 -340492279/
real(212837625), 516944/
real(467775), 3413/
real(14175),
1259 2986003168LL/
real(37574026875LL), -7597644214LL/
real(1915538625),
1260 4430783356LL/
real(1915538625), 206834/
real(467775), -15958/
real(14175),
1262 -375566203/
real(39037950), 851209552/
real(174139875),
1263 62016436/
real(70945875), -832976/
real(467775), 16049/
real(28350),
1264 5106181018156LL/
real(488462349375LL), 3475643362LL/
real(1915538625),
1265 -651151712/
real(212837625), 15602/
real(18711),
1266 34581190223LL/
real(8881133625LL), -10656173804LL/
real(1915538625),
1267 2561772812LL/
real(1915538625),
1268 -5150169424688LL/
real(488462349375LL), 873037408/
real(383107725),
1269 7939103697617LL/
real(1953849397500LL),
1272 static const int ptrs[] = {
1273 0, 0, 20, 40, 60, 96, 132, 152, 152, 172, 192, 228, 264, 284, 304, 304,
1274 324, 360, 396, 416, 436, 456, 456, 492, 528, 564, 600, 636, 672, 672,
1275 708, 744, 780, 816, 852, 888, 888,
1278#error "Unsupported value for GEOGRAPHICLIB_AUXLATITUDE_ORDER"
1282 "Mismatch in size of ptrs array");
1283 static_assert(
sizeof(coeffs) /
sizeof(real) ==
1288 "Mismatch in size of coeffs array");
1291 if (auxout == auxin)
1292 fill(_c +
Lmax * k, _c +
Lmax * (k + 1), 0);
1297 for (
int l = 0; l <
Lmax; ++l) {
1298 int m = (
Lmax - l - 1) / 2;
1304 for (
int l = 0; l <
Lmax; ++l) {
1305 int m = (
Lmax - l - 1);
1316 const real c[],
int K) {
1322 real u0 = 0, u1 = 0,
1323 x = 2 * (czeta - szeta) * (czeta + szeta);
1325 real t = x * u0 - u1 + c[--k];
1331 real f0 = sinp ? 2 * szeta * czeta : x / 2, fm1 = sinp ? 0 : 1;
1332 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
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.
void swap(GeographicLib::NearestNeighbor< dist_t, pos_t, distfun_t > &a, GeographicLib::NearestNeighbor< dist_t, pos_t, distfun_t > &b)