31double Cl2(
double x)
noexcept
33 const double PI = 3.14159265358979324;
34 const double PI2 = 2*PI, PIH = PI/2, PI28 = PI*PI/8;
43 x = std::fmod(x, PI2);
47 const double p0 = 6.28125;
48 const double p1 = 0.0019353071795864769253;
63 1.3888888888888889e-02, -4.3286930203743071e-04,
64 3.2779814789973427e-06, -3.6001540369575084e-09
67 1.0000000000000000e+00, -3.6166589746694121e-02,
68 3.6015827281202639e-04, -8.3646182842184428e-07
71 const double y2 = y*y;
72 const double p =
P[0] + y *
P[1] + y2 * (
P[2] + y *
P[3]);
73 const double q =
Q[0] + y *
Q[1] + y2 * (
Q[2] + y *
Q[3]);
75 h = x*(1 - std::log(x) + y*p/q);
78 6.4005702446195512e-01, -2.0641655351338783e-01,
79 2.4175305223497718e-02, -1.2355955287855728e-03,
80 2.5649833551291124e-05, -1.4783829128773320e-07
83 1.0000000000000000e+00, -2.5299102015666356e-01,
84 2.2148751048467057e-02, -7.8183920462457496e-04,
85 9.5432542196310670e-06, -1.8184302880448247e-08
87 const double y = PI - x;
88 const double z = y*y - PI28;
89 const double z2 = z*z;
90 const double z4 = z2*z2;
91 const double p =
P[0] + z *
P[1] + z2 * (
P[2] + z *
P[3]) +
92 z4 * (
P[4] + z *
P[5]);
93 const double q =
Q[0] + z *
Q[1] + z2 * (
Q[2] + z *
Q[3]) +
94 z4 * (
Q[4] + z *
Q[5]);
112long double Cl2(
long double x)
noexcept
114 const long double PI = 3.14159265358979323846264338327950288L;
115 const long double PI2 = 2*PI, PIH = PI/2, PI28 = PI*PI/8;
124 x = std::fmod(x, PI2);
128 const long double p0 = 6.28125L;
129 const long double p1 = 0.0019353071795864769252867665590057683943L;
136 }
else if (x == PI) {
143 const long double P[] = {
144 1.397578291120963523206040867955323306427e-02L,
145 -1.352264019891065415863834380176236559873e-03L,
146 5.292882735889014643812912154970234565053e-05L,
147 -1.073753987723414895538739538414225390109e-06L,
148 1.200707648340635046555652744163248062266e-08L,
149 -7.252858952718044684640648391665783926850e-11L,
150 2.140267450520462605982610727277758328875e-13L,
151 -2.396401118613241903411604342093433593468e-16L,
152 4.441828690926415235588391389499684215009e-20L
154 const long double Q[] = {
155 1.000000000000000000000000000000000000000e+00L,
156 -1.018694323414614410071369720193716012304e-01L,
157 4.248408782245281612900840467370146443889e-03L,
158 -9.337710301347963985908084056584187570954e-05L,
159 1.159379163193822053103946363960603543601e-06L,
160 -8.083352720393357000801675734774176899515e-09L,
161 2.949313240431512997069808854213308209519e-11L,
162 -4.742700419624204182400715964695278593777e-14L,
163 2.158380636740175386190809152807629331877e-17L
165 const long double y = x*x;
166 const long double z = y - PI28;
167 const long double z2 = z*z;
168 const long double z4 = z2*z2;
169 const long double z8 = z4*z4;
170 const long double p =
P[0] + z *
P[1] + z2 * (
P[2] + z *
P[3]) +
171 z4 * (
P[4] + z *
P[5] + z2 * (
P[6] + z *
P[7])) + z8 *
P[8];
172 const long double q =
Q[0] + z *
Q[1] + z2 * (
Q[2] + z *
Q[3]) +
173 z4 * (
Q[4] + z *
Q[5] + z2 * (
Q[6] + z *
Q[7])) + z8 *
Q[8];
175 h = x*(1 - std::log(x) + y*p/q);
177 const long double P[] = {
178 6.400570244619551220929428522356830562481e-01L,
179 -4.651631624886004423703445967760673575997e-01L,
180 1.487130845262105644024901814213146749895e-01L,
181 -2.749665174801454303884783494225610407035e-02L,
182 3.251522465413666561950482170352156048203e-03L,
183 -2.567438381297475310848635518657180974512e-04L,
184 1.372076105130164861564020074178493529151e-05L,
185 -4.924179093673498700461153483531075799113e-07L,
186 1.153267936031337440182387313169828395860e-08L,
187 -1.667578310677508029208023423625588832295e-10L,
188 1.348437292247918547169070120217729056878e-12L,
189 -5.052245092698477071447850656280954693011e-15L,
190 5.600638109466570497480415519182233229048e-18L
192 const long double Q[] = {
193 1.000000000000000000000000000000000000000e+00L,
194 -6.572465772185054284667746526549393897676e-01L,
195 1.886234634096976582977630140163583172173e-01L,
196 -3.103347567899737687117030083178445406132e-02L,
197 3.230860399291224478336071920154030050234e-03L,
198 -2.216546569335921728108984951507368387512e-04L,
199 1.011949972138985643994631167412420906088e-05L,
200 -3.033400935206767852937290458763547850384e-07L,
201 5.748454611964843057644023468691231929690e-09L,
202 -6.408350048413952604351408631173781906861e-11L,
203 3.678584366662951864267349037579031493395e-13L,
204 -8.240439699357036167611014086997683837396e-16L,
205 3.041049046123062158788159773779755292771e-19L
207 const long double y = PI - x;
208 const long double z = y*y - PI28;
209 const long double z2 = z*z;
210 const long double z4 = z2*z2;
211 const long double z8 = z4*z4;
212 const long double p =
P[0] + z *
P[1] + z2 * (
P[2] + z *
P[3]) +
213 z4 * (
P[4] + z *
P[5] + z2 * (
P[6] + z *
P[7])) +
214 z8 * (
P[8] + z *
P[9] + z2 * (
P[10] + z *
P[11]) + z4 *
P[12]);
215 const long double q =
Q[0] + z *
Q[1] + z2 * (
Q[2] + z *
Q[3]) +
216 z4 * (
Q[4] + z *
Q[5] + z2 * (
Q[6] + z *
Q[7])) +
217 z8 * (
Q[8] + z *
Q[9] + z2 * (
Q[10] + z *
Q[11]) + z4 *
Q[12]);