summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx')
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx485
1 files changed, 286 insertions, 199 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
index 223e28a1ba7..165301268b0 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-04-30}
+% \date{Released 2018-05-12}
%
% \maketitle
%
@@ -512,178 +512,231 @@
% 24 - 5 = 23$ significant digits, enough to round correctly up to
% $0.6\cdot\text{ulp}$ in all cases.
%
-% ^^A todo: if the exponent range is reduced, store 1/2pi as a simple tl
-% \begin{variable}[EXP]{\@@_trig_inverse_two_pi:}
-% This macro expands to |,,!| or~|,!| followed by $10112$~decimals of
+% \begin{variable}[EXP]{\c_@@_trig_intarray}
+% This integer array stores blocks of $8$~decimals of
+% $10^{-16}/(2\pi)$. Each entry is $10^8$ plus an $8$~digit number
+% storing $8$ decimals. In total we store $10112$~decimals of
% $10^{-16}/(2\pi)$. The number of decimals we really need is the
% maximum exponent plus the number of digits we later need,~$52$,
-% plus~$12$ ($4-1$~groups of $4$~digits). We store the decimals as a
-% control sequence name, and convert it to a token list when required:
-% strings take up less memory than their token list representation.
+% plus~$12$ ($4-1$~groups of $4$~digits). The memory footprint ($1/2$
+% byte per digit) is the same as an earlier method of storing the data
+% as a control sequence name, but the major advantage is that we can
+% unpack specific subsets of the digits without unpacking the $10112$
+% decimals.
% \begin{macrocode}
-\cs_new:Npx \@@_trig_inverse_two_pi:
+\intarray_const_from_clist:Nn \c_@@_trig_intarray
{
- \exp_not:n { \exp_after:wN \use_none:n \token_to_str:N }
- \cs:w , , !
- 0000000000000000159154943091895335768883763372514362034459645740 ~
- 4564487476673440588967976342265350901138027662530859560728427267 ~
- 5795803689291184611457865287796741073169983922923996693740907757 ~
- 3077746396925307688717392896217397661693362390241723629011832380 ~
- 1142226997557159404618900869026739561204894109369378440855287230 ~
- 9994644340024867234773945961089832309678307490616698646280469944 ~
- 8652187881574786566964241038995874139348609983868099199962442875 ~
- 5851711788584311175187671605465475369880097394603647593337680593 ~
- 0249449663530532715677550322032477781639716602294674811959816584 ~
- 0606016803035998133911987498832786654435279755070016240677564388 ~
- 8495713108801221993761476813777647378906330680464579784817613124 ~
- 2731406996077502450029775985708905690279678513152521001631774602 ~
- 0924811606240561456203146484089248459191435211575407556200871526 ~
- 6068022171591407574745827225977462853998751553293908139817724093 ~
- 5825479707332871904069997590765770784934703935898280871734256403 ~
- 6689511662545705943327631268650026122717971153211259950438667945 ~
- 0376255608363171169525975812822494162333431451061235368785631136 ~
- 3669216714206974696012925057833605311960859450983955671870995474 ~
- 6510431623815517580839442979970999505254387566129445883306846050 ~
- 7852915151410404892988506388160776196993073410389995786918905980 ~
- 9373777206187543222718930136625526123878038753888110681406765434 ~
- 0828278526933426799556070790386060352738996245125995749276297023 ~
- 5940955843011648296411855777124057544494570217897697924094903272 ~
- 9477021664960356531815354400384068987471769158876319096650696440 ~
- 4776970687683656778104779795450353395758301881838687937766124814 ~
- 9530599655802190835987510351271290432315804987196868777594656634 ~
- 6221034204440855497850379273869429353661937782928735937843470323 ~
- 0237145837923557118636341929460183182291964165008783079331353497 ~
- 7909974586492902674506098936890945883050337030538054731232158094 ~
- 3197676032283131418980974982243833517435698984750103950068388003 ~
- 9786723599608024002739010874954854787923568261139948903268997427 ~
- 0834961149208289037767847430355045684560836714793084567233270354 ~
- 8539255620208683932409956221175331839402097079357077496549880868 ~
- 6066360968661967037474542102831219251846224834991161149566556037 ~
- 9696761399312829960776082779901007830360023382729879085402387615 ~
- 5744543092601191005433799838904654921248295160707285300522721023 ~
- 6017523313173179759311050328155109373913639645305792607180083617 ~
- 9548767246459804739772924481092009371257869183328958862839904358 ~
- 6866663975673445140950363732719174311388066383072592302759734506 ~
- 0548212778037065337783032170987734966568490800326988506741791464 ~
- 6835082816168533143361607309951498531198197337584442098416559541 ~
- 5225064339431286444038388356150879771645017064706751877456059160 ~
- 8716857857939226234756331711132998655941596890719850688744230057 ~
- 5191977056900382183925622033874235362568083541565172971088117217 ~
- 9593683256488518749974870855311659830610139214454460161488452770 ~
- 2511411070248521739745103866736403872860099674893173561812071174 ~
- 0478899368886556923078485023057057144063638632023685201074100574 ~
- 8592281115721968003978247595300166958522123034641877365043546764 ~
- 6456565971901123084767099309708591283646669191776938791433315566 ~
- 5066981321641521008957117286238426070678451760111345080069947684 ~
- 2235698962488051577598095339708085475059753626564903439445420581 ~
- 7886435683042000315095594743439252544850674914290864751442303321 ~
- 3324569511634945677539394240360905438335528292434220349484366151 ~
- 4663228602477666660495314065734357553014090827988091478669343492 ~
- 2737602634997829957018161964321233140475762897484082891174097478 ~
- 2637899181699939487497715198981872666294601830539583275209236350 ~
- 6853889228468247259972528300766856937583659722919824429747406163 ~
- 8183113958306744348516928597383237392662402434501997809940402189 ~
- 6134834273613676449913827154166063424829363741850612261086132119 ~
- 9863346284709941839942742955915628333990480382117501161211667205 ~
- 1912579303552929241134403116134112495318385926958490443846807849 ~
- 0973982808855297045153053991400988698840883654836652224668624087 ~
- 2540140400911787421220452307533473972538149403884190586842311594 ~
- 6322744339066125162393106283195323883392131534556381511752035108 ~
- 7459558201123754359768155340187407394340363397803881721004531691 ~
- 8295194879591767395417787924352761740724605939160273228287946819 ~
- 3649128949714953432552723591659298072479985806126900733218844526 ~
- 7943350455801952492566306204876616134365339920287545208555344144 ~
- 0990512982727454659118132223284051166615650709837557433729548631 ~
- 2041121716380915606161165732000083306114606181280326258695951602 ~
- 4632166138576614804719932707771316441201594960110632830520759583 ~
- 4850305079095584982982186740289838551383239570208076397550429225 ~
- 9847647071016426974384504309165864528360324933604354657237557916 ~
- 1366324120457809969715663402215880545794313282780055246132088901 ~
- 8742121092448910410052154968097113720754005710963406643135745439 ~
- 9159769435788920793425617783022237011486424925239248728713132021 ~
- 7667360756645598272609574156602343787436291321097485897150713073 ~
- 9104072643541417970572226547980381512759579124002534468048220261 ~
- 7342299001020483062463033796474678190501811830375153802879523433 ~
- 4195502135689770912905614317878792086205744999257897569018492103 ~
- 2420647138519113881475640209760554895793785141404145305151583964 ~
- 2823265406020603311891586570272086250269916393751527887360608114 ~
- 5569484210322407772727421651364234366992716340309405307480652685 ~
- 0930165892136921414312937134106157153714062039784761842650297807 ~
- 8606266969960809184223476335047746719017450451446166382846208240 ~
- 8673595102371302904443779408535034454426334130626307459513830310 ~
- 2293146934466832851766328241515210179422644395718121717021756492 ~
- 1964449396532222187658488244511909401340504432139858628621083179 ~
- 3939608443898019147873897723310286310131486955212620518278063494 ~
- 5711866277825659883100535155231665984394090221806314454521212978 ~
- 9734471488741258268223860236027109981191520568823472398358013366 ~
- 0683786328867928619732367253606685216856320119489780733958419190 ~
- 6659583867852941241871821727987506103946064819585745620060892122 ~
- 8416394373846549589932028481236433466119707324309545859073361878 ~
- 6290631850165106267576851216357588696307451999220010776676830946 ~
- 9814975622682434793671310841210219520899481912444048751171059184 ~
- 4139907889455775184621619041530934543802808938628073237578615267 ~
- 7971143323241969857805637630180884386640607175368321362629671224 ~
- 2609428540110963218262765120117022552929289655594608204938409069 ~
- 0760692003954646191640021567336017909631872891998634341086903200 ~
- 5796637103128612356988817640364252540837098108148351903121318624 ~
- 7228181050845123690190646632235938872454630737272808789830041018 ~
- 9485913673742589418124056729191238003306344998219631580386381054 ~
- 2457893450084553280313511884341007373060595654437362488771292628 ~
- 9807423539074061786905784443105274262641767830058221486462289361 ~
- 9296692992033046693328438158053564864073184440599549689353773183 ~
- 6726613130108623588021288043289344562140479789454233736058506327 ~
- 0439981932635916687341943656783901281912202816229500333012236091 ~
- 8587559201959081224153679499095448881099758919890811581163538891 ~
- 6339402923722049848375224236209100834097566791710084167957022331 ~
- 7897107102928884897013099533995424415335060625843921452433864640 ~
- 3432440657317477553405404481006177612569084746461432976543900008 ~
- 3826521145210162366431119798731902751191441213616962045693602633 ~
- 6102355962140467029012156796418735746835873172331004745963339773 ~
- 2477044918885134415363760091537564267438450166221393719306748706 ~
- 2881595464819775192207710236743289062690709117919412776212245117 ~
- 2354677115640433357720616661564674474627305622913332030953340551 ~
- 3841718194605321501426328000879551813296754972846701883657425342 ~
- 5016994231069156343106626043412205213831587971115075454063290657 ~
- 0248488648697402872037259869281149360627403842332874942332178578 ~
- 7750735571857043787379693402336902911446961448649769719434527467 ~
- 4429603089437192540526658890710662062575509930379976658367936112 ~
- 8137451104971506153783743579555867972129358764463093757203221320 ~
- 2460565661129971310275869112846043251843432691552928458573495971 ~
- 5042565399302112184947232132380516549802909919676815118022483192 ~
- 5127372199792134331067642187484426215985121676396779352982985195 ~
- 8545392106957880586853123277545433229161989053189053725391582222 ~
- 9232597278133427818256064882333760719681014481453198336237910767 ~
- 1255017528826351836492103572587410356573894694875444694018175923 ~
- 0609370828146501857425324969212764624247832210765473750568198834 ~
- 5641035458027261252285503154325039591848918982630498759115406321 ~
- 0354263890012837426155187877318375862355175378506956599570028011 ~
- 5841258870150030170259167463020842412449128392380525772514737141 ~
- 2310230172563968305553583262840383638157686828464330456805994018 ~
- 7001071952092970177990583216417579868116586547147748964716547948 ~
- 8312140431836079844314055731179349677763739898930227765607058530 ~
- 4083747752640947435070395214524701683884070908706147194437225650 ~
- 2823145872995869738316897126851939042297110721350756978037262545 ~
- 8141095038270388987364516284820180468288205829135339013835649144 ~
- 3004015706509887926715417450706686888783438055583501196745862340 ~
- 8059532724727843829259395771584036885940989939255241688378793572 ~
- 7967951654076673927031256418760962190243046993485989199060012977 ~
- 7469214532970421677817261517850653008552559997940209969455431545 ~
- 2745856704403686680428648404512881182309793496962721836492935516 ~
- 2029872469583299481932978335803459023227052612542114437084359584 ~
- 9443383638388317751841160881711251279233374577219339820819005406 ~
- 3292937775306906607415304997682647124407768817248673421685881509 ~
- 9133422075930947173855159340808957124410634720893194912880783576 ~
- 3115829400549708918023366596077070927599010527028150868897828549 ~
- 4340372642729262103487013992868853550062061514343078665396085995 ~
- 0058714939141652065302070085265624074703660736605333805263766757 ~
- 2018839497277047222153633851135483463624619855425993871933367482 ~
- 0422097449956672702505446423243957506869591330193746919142980999 ~
- 3424230550172665212092414559625960554427590951996824313084279693 ~
- 7113207021049823238195747175985519501864630940297594363194450091 ~
- 9150616049228764323192129703446093584259267276386814363309856853 ~
- 2786024332141052330760658841495858718197071242995959226781172796 ~
- 4438853796763139274314227953114500064922126500133268623021550837
- \cs_end:
+ 100000000, 100000000, 115915494, 130918953, 135768883, 176337251,
+ 143620344, 159645740, 145644874, 176673440, 158896797, 163422653,
+ 150901138, 102766253, 108595607, 128427267, 157958036, 189291184,
+ 161145786, 152877967, 141073169, 198392292, 139966937, 140907757,
+ 130777463, 196925307, 168871739, 128962173, 197661693, 136239024,
+ 117236290, 111832380, 111422269, 197557159, 140461890, 108690267,
+ 139561204, 189410936, 193784408, 155287230, 199946443, 140024867,
+ 123477394, 159610898, 132309678, 130749061, 166986462, 180469944,
+ 186521878, 181574786, 156696424, 110389958, 174139348, 160998386,
+ 180991999, 162442875, 158517117, 188584311, 117518767, 116054654,
+ 175369880, 109739460, 136475933, 137680593, 102494496, 163530532,
+ 171567755, 103220324, 177781639, 171660229, 146748119, 159816584,
+ 106060168, 103035998, 113391198, 174988327, 186654435, 127975507,
+ 100162406, 177564388, 184957131, 108801221, 199376147, 168137776,
+ 147378906, 133068046, 145797848, 117613124, 127314069, 196077502,
+ 145002977, 159857089, 105690279, 167851315, 125210016, 131774602,
+ 109248116, 106240561, 145620314, 164840892, 148459191, 143521157,
+ 154075562, 100871526, 160680221, 171591407, 157474582, 172259774,
+ 162853998, 175155329, 139081398, 117724093, 158254797, 107332871,
+ 190406999, 175907657, 170784934, 170393589, 182808717, 134256403,
+ 166895116, 162545705, 194332763, 112686500, 126122717, 197115321,
+ 112599504, 138667945, 103762556, 108363171, 116952597, 158128224,
+ 194162333, 143145106, 112353687, 185631136, 136692167, 114206974,
+ 169601292, 150578336, 105311960, 185945098, 139556718, 170995474,
+ 165104316, 123815517, 158083944, 129799709, 199505254, 138756612,
+ 194458833, 106846050, 178529151, 151410404, 189298850, 163881607,
+ 176196993, 107341038, 199957869, 118905980, 193737772, 106187543,
+ 122271893, 101366255, 126123878, 103875388, 181106814, 106765434,
+ 108282785, 126933426, 179955607, 107903860, 160352738, 199624512,
+ 159957492, 176297023, 159409558, 143011648, 129641185, 157771240,
+ 157544494, 157021789, 176979240, 194903272, 194770216, 164960356,
+ 153181535, 144003840, 168987471, 176915887, 163190966, 150696440,
+ 147769706, 187683656, 177810477, 197954503, 153395758, 130188183,
+ 186879377, 166124814, 195305996, 155802190, 183598751, 103512712,
+ 190432315, 180498719, 168687775, 194656634, 162210342, 104440855,
+ 149785037, 192738694, 129353661, 193778292, 187359378, 143470323,
+ 102371458, 137923557, 111863634, 119294601, 183182291, 196416500,
+ 187830793, 131353497, 179099745, 186492902, 167450609, 189368909,
+ 145883050, 133703053, 180547312, 132158094, 131976760, 132283131,
+ 141898097, 149822438, 133517435, 169898475, 101039500, 168388003,
+ 197867235, 199608024, 100273901, 108749548, 154787923, 156826113,
+ 199489032, 168997427, 108349611, 149208289, 103776784, 174303550,
+ 145684560, 183671479, 130845672, 133270354, 185392556, 120208683,
+ 193240995, 162211753, 131839402, 109707935, 170774965, 149880868,
+ 160663609, 168661967, 103747454, 121028312, 119251846, 122483499,
+ 111611495, 166556037, 196967613, 199312829, 196077608, 127799010,
+ 107830360, 102338272, 198790854, 102387615, 157445430, 192601191,
+ 100543379, 198389046, 154921248, 129516070, 172853005, 122721023,
+ 160175233, 113173179, 175931105, 103281551, 109373913, 163964530,
+ 157926071, 180083617, 195487672, 146459804, 173977292, 144810920,
+ 109371257, 186918332, 189588628, 139904358, 168666639, 175673445,
+ 114095036, 137327191, 174311388, 106638307, 125923027, 159734506,
+ 105482127, 178037065, 133778303, 121709877, 134966568, 149080032,
+ 169885067, 141791464, 168350828, 116168533, 114336160, 173099514,
+ 198531198, 119733758, 144420984, 116559541, 152250643, 139431286,
+ 144403838, 183561508, 179771645, 101706470, 167518774, 156059160,
+ 187168578, 157939226, 123475633, 117111329, 198655941, 159689071,
+ 198506887, 144230057, 151919770, 156900382, 118392562, 120338742,
+ 135362568, 108354156, 151729710, 188117217, 195936832, 156488518,
+ 174997487, 108553116, 159830610, 113921445, 144601614, 188452770,
+ 125114110, 170248521, 173974510, 138667364, 103872860, 109967489,
+ 131735618, 112071174, 104788993, 168886556, 192307848, 150230570,
+ 157144063, 163863202, 136852010, 174100574, 185922811, 115721968,
+ 100397824, 175953001, 166958522, 112303464, 118773650, 143546764,
+ 164565659, 171901123, 108476709, 193097085, 191283646, 166919177,
+ 169387914, 133315566, 150669813, 121641521, 100895711, 172862384,
+ 126070678, 145176011, 113450800, 169947684, 122356989, 162488051,
+ 157759809, 153397080, 185475059, 175362656, 149034394, 145420581,
+ 178864356, 183042000, 131509559, 147434392, 152544850, 167491429,
+ 108647514, 142303321, 133245695, 111634945, 167753939, 142403609,
+ 105438335, 152829243, 142203494, 184366151, 146632286, 102477666,
+ 166049531, 140657343, 157553014, 109082798, 180914786, 169343492,
+ 127376026, 134997829, 195701816, 119643212, 133140475, 176289748,
+ 140828911, 174097478, 126378991, 181699939, 148749771, 151989818,
+ 172666294, 160183053, 195832752, 109236350, 168538892, 128468247,
+ 125997252, 183007668, 156937583, 165972291, 198244297, 147406163,
+ 181831139, 158306744, 134851692, 185973832, 137392662, 140243450,
+ 119978099, 140402189, 161348342, 173613676, 144991382, 171541660,
+ 163424829, 136374185, 106122610, 186132119, 198633462, 184709941,
+ 183994274, 129559156, 128333990, 148038211, 175011612, 111667205,
+ 119125793, 103552929, 124113440, 131161341, 112495318, 138592695,
+ 184904438, 146807849, 109739828, 108855297, 104515305, 139914009,
+ 188698840, 188365483, 166522246, 168624087, 125401404, 100911787,
+ 142122045, 123075334, 173972538, 114940388, 141905868, 142311594,
+ 163227443, 139066125, 116239310, 162831953, 123883392, 113153455,
+ 163815117, 152035108, 174595582, 101123754, 135976815, 153401874,
+ 107394340, 136339780, 138817210, 104531691, 182951948, 179591767,
+ 139541778, 179243527, 161740724, 160593916, 102732282, 187946819,
+ 136491289, 149714953, 143255272, 135916592, 198072479, 198580612,
+ 169007332, 118844526, 179433504, 155801952, 149256630, 162048766,
+ 116134365, 133992028, 175452085, 155344144, 109905129, 182727454,
+ 165911813, 122232840, 151166615, 165070983, 175574337, 129548631,
+ 120411217, 116380915, 160616116, 157320000, 183306114, 160618128,
+ 103262586, 195951602, 146321661, 138576614, 180471993, 127077713,
+ 116441201, 159496011, 106328305, 120759583, 148503050, 179095584,
+ 198298218, 167402898, 138551383, 123957020, 180763975, 150429225,
+ 198476470, 171016426, 197438450, 143091658, 164528360, 132493360,
+ 143546572, 137557916, 113663241, 120457809, 196971566, 134022158,
+ 180545794, 131328278, 100552461, 132088901, 187421210, 192448910,
+ 141005215, 149680971, 113720754, 100571096, 134066431, 135745439,
+ 191597694, 135788920, 179342561, 177830222, 137011486, 142492523,
+ 192487287, 113132021, 176673607, 156645598, 127260957, 141566023,
+ 143787436, 129132109, 174858971, 150713073, 191040726, 143541417,
+ 197057222, 165479803, 181512759, 157912400, 125344680, 148220261,
+ 173422990, 101020483, 106246303, 137964746, 178190501, 181183037,
+ 151538028, 179523433, 141955021, 135689770, 191290561, 143178787,
+ 192086205, 174499925, 178975690, 118492103, 124206471, 138519113,
+ 188147564, 102097605, 154895793, 178514140, 141453051, 151583964,
+ 128232654, 106020603, 131189158, 165702720, 186250269, 191639375,
+ 115278873, 160608114, 155694842, 110322407, 177272742, 116513642,
+ 134366992, 171634030, 194053074, 180652685, 109301658, 192136921,
+ 141431293, 171341061, 157153714, 106203978, 147618426, 150297807,
+ 186062669, 169960809, 118422347, 163350477, 146719017, 145045144,
+ 161663828, 146208240, 186735951, 102371302, 190444377, 194085350,
+ 134454426, 133413062, 163074595, 113830310, 122931469, 134466832,
+ 185176632, 182415152, 110179422, 164439571, 181217170, 121756492,
+ 119644493, 196532222, 118765848, 182445119, 109401340, 150443213,
+ 198586286, 121083179, 139396084, 143898019, 114787389, 177233102,
+ 186310131, 148695521, 126205182, 178063494, 157118662, 177825659,
+ 188310053, 151552316, 165984394, 109022180, 163144545, 121212978,
+ 197344714, 188741258, 126822386, 102360271, 109981191, 152056882,
+ 134723983, 158013366, 106837863, 128867928, 161973236, 172536066,
+ 185216856, 132011948, 197807339, 158419190, 166595838, 167852941,
+ 124187182, 117279875, 106103946, 106481958, 157456200, 160892122,
+ 184163943, 173846549, 158993202, 184812364, 133466119, 170732430,
+ 195458590, 173361878, 162906318, 150165106, 126757685, 112163575,
+ 188696307, 145199922, 100107766, 176830946, 198149756, 122682434,
+ 179367131, 108412102, 119520899, 148191244, 140487511, 171059184,
+ 141399078, 189455775, 118462161, 190415309, 134543802, 180893862,
+ 180732375, 178615267, 179711433, 123241969, 185780563, 176301808,
+ 184386640, 160717536, 183213626, 129671224, 126094285, 140110963,
+ 121826276, 151201170, 122552929, 128965559, 146082049, 138409069,
+ 107606920, 103954646, 119164002, 115673360, 117909631, 187289199,
+ 186343410, 186903200, 157966371, 103128612, 135698881, 176403642,
+ 152540837, 109810814, 183519031, 121318624, 172281810, 150845123,
+ 169019064, 166322359, 138872454, 163073727, 128087898, 130041018,
+ 194859136, 173742589, 141812405, 167291912, 138003306, 134499821,
+ 196315803, 186381054, 124578934, 150084553, 128031351, 118843410,
+ 107373060, 159565443, 173624887, 171292628, 198074235, 139074061,
+ 178690578, 144431052, 174262641, 176783005, 182214864, 162289361,
+ 192966929, 192033046, 169332843, 181580535, 164864073, 118444059,
+ 195496893, 153773183, 167266131, 130108623, 158802128, 180432893,
+ 144562140, 147978945, 142337360, 158506327, 104399819, 132635916,
+ 168734194, 136567839, 101281912, 120281622, 195003330, 112236091,
+ 185875592, 101959081, 122415367, 194990954, 148881099, 175891989,
+ 108115811, 163538891, 163394029, 123722049, 184837522, 142362091,
+ 100834097, 156679171, 100841679, 157022331, 178971071, 102928884,
+ 189701309, 195339954, 124415335, 106062584, 139214524, 133864640,
+ 134324406, 157317477, 155340540, 144810061, 177612569, 108474646,
+ 114329765, 143900008, 138265211, 145210162, 136643111, 197987319,
+ 102751191, 144121361, 169620456, 193602633, 161023559, 162140467,
+ 102901215, 167964187, 135746835, 187317233, 110047459, 163339773,
+ 124770449, 118885134, 141536376, 100915375, 164267438, 145016622,
+ 113937193, 106748706, 128815954, 164819775, 119220771, 102367432,
+ 189062690, 170911791, 194127762, 112245117, 123546771, 115640433,
+ 135772061, 166615646, 174474627, 130562291, 133320309, 153340551,
+ 138417181, 194605321, 150142632, 180008795, 151813296, 175497284,
+ 167018836, 157425342, 150169942, 131069156, 134310662, 160434122,
+ 105213831, 158797111, 150754540, 163290657, 102484886, 148697402,
+ 187203725, 198692811, 149360627, 140384233, 128749423, 132178578,
+ 177507355, 171857043, 178737969, 134023369, 102911446, 196144864,
+ 197697194, 134527467, 144296030, 189437192, 154052665, 188907106,
+ 162062575, 150993037, 199766583, 167936112, 181374511, 104971506,
+ 115378374, 135795558, 167972129, 135876446, 130937572, 103221320,
+ 124605656, 161129971, 131027586, 191128460, 143251843, 143269155,
+ 129284585, 173495971, 150425653, 199302112, 118494723, 121323805,
+ 116549802, 190991967, 168151180, 122483192, 151273721, 199792134,
+ 133106764, 121874844, 126215985, 112167639, 167793529, 182985195,
+ 185453921, 106957880, 158685312, 132775454, 133229161, 198905318,
+ 190537253, 191582222, 192325972, 178133427, 181825606, 148823337,
+ 160719681, 101448145, 131983362, 137910767, 112550175, 128826351,
+ 183649210, 135725874, 110356573, 189469487, 154446940, 118175923,
+ 106093708, 128146501, 185742532, 149692127, 164624247, 183221076,
+ 154737505, 168198834, 156410354, 158027261, 125228550, 131543250,
+ 139591848, 191898263, 104987591, 115406321, 103542638, 190012837,
+ 142615518, 178773183, 175862355, 117537850, 169565995, 170028011,
+ 158412588, 170150030, 117025916, 174630208, 142412449, 112839238,
+ 105257725, 114737141, 123102301, 172563968, 130555358, 132628403,
+ 183638157, 168682846, 143304568, 105994018, 170010719, 152092970,
+ 117799058, 132164175, 179868116, 158654714, 177489647, 116547948,
+ 183121404, 131836079, 184431405, 157311793, 149677763, 173989893,
+ 102277656, 107058530, 140837477, 152640947, 143507039, 152145247,
+ 101683884, 107090870, 161471944, 137225650, 128231458, 172995869,
+ 173831689, 171268519, 139042297, 111072135, 107569780, 137262545,
+ 181410950, 138270388, 198736451, 162848201, 180468288, 120582913,
+ 153390138, 135649144, 130040157, 106509887, 192671541, 174507066,
+ 186888783, 143805558, 135011967, 145862340, 180595327, 124727843,
+ 182925939, 157715840, 136885940, 198993925, 152416883, 178793572,
+ 179679516, 154076673, 192703125, 164187609, 162190243, 104699348,
+ 159891990, 160012977, 174692145, 132970421, 167781726, 115178506,
+ 153008552, 155999794, 102099694, 155431545, 127458567, 104403686,
+ 168042864, 184045128, 181182309, 179349696, 127218364, 192935516,
+ 120298724, 169583299, 148193297, 183358034, 159023227, 105261254,
+ 121144370, 184359584, 194433836, 138388317, 175184116, 108817112,
+ 151279233, 137457721, 193398208, 119005406, 132929377, 175306906,
+ 160741530, 149976826, 147124407, 176881724, 186734216, 185881509,
+ 191334220, 175930947, 117385515, 193408089, 157124410, 163472089,
+ 131949128, 180783576, 131158294, 100549708, 191802336, 165960770,
+ 170927599, 101052702, 181508688, 197828549, 143403726, 142729262,
+ 110348701, 139928688, 153550062, 106151434, 130786653, 196085995,
+ 100587149, 139141652, 106530207, 100852656, 124074703, 166073660,
+ 153338052, 163766757, 120188394, 197277047, 122215363, 138511354,
+ 183463624, 161985542, 159938719, 133367482, 104220974, 149956672,
+ 170250544, 164232439, 157506869, 159133019, 137469191, 142980999,
+ 134242305, 150172665, 121209241, 145596259, 160554427, 159095199,
+ 168243130, 184279693, 171132070, 121049823, 123819574, 171759855,
+ 119501864, 163094029, 175943631, 194450091, 191506160, 149228764,
+ 132319212, 197034460, 193584259, 126727638, 168143633, 109856853,
+ 127860243, 132141052, 133076065, 188414958, 158718197, 107124299,
+ 159592267, 181172796, 144388537, 196763139, 127431422, 179531145,
+ 100064922, 112650013, 132686230, 121550837,
}
% \end{macrocode}
% \end{variable}
@@ -691,45 +744,79 @@
% \begin{macro}[rEXP]
% {
% \@@_trig_large:ww,
-% \@@_trig_large_auxi:wwwwww,
-% \@@_trig_large_auxii:ww,
-% \@@_trig_large_auxiii:wNNNNNNNN,
-% \@@_trig_large_auxiv:wN
+% \@@_trig_large_auxi:w,
+% \@@_trig_large_auxii:w,
+% \@@_trig_large_auxiii:w,
% }
% The exponent~|#1| is between $1$ and~$\ExplSyntaxOn \int_use:N
-% \c__fp_max_exponent_int$. We discard the integer part of
-% $10^{\text{\texttt{\#1}}-16}/(2\pi)$, that is, the first |#1|~digits
-% of $10^{-16}/(2\pi)$, because it yields an integer contribution to
-% $x/(2\pi)$. The \texttt{auxii} auxiliary discards~$64$ digits at a
-% time thanks to spaces inserted in the result of
-% \cs{@@_trig_inverse_two_pi:}, while \texttt{auxiii} discards~$8$
-% digits at a time, and \texttt{auxiv} discards digits one at a time.
-% Then $64$~digits are packed into groups of~$4$ and the \texttt{auxv}
-% auxiliary is called.
+% \c__fp_max_exponent_int$. We wish to look up decimals
+% $10^{\text{\texttt{\#1}}-16}/(2\pi)$ starting from the digit
+% $|#1|+1$. Since they are stored in batches of~$8$, compute
+% $\lfloor|#1|/8\rfloor$ and fetch blocks of $8$ digits starting
+% there. The numbering of items in \cs{c_@@_trig_intarray} starts
+% at~$1$, so the block $\lfloor|#1|/8\rfloor+1$ contains the digit we
+% want, at one of the eight positions. Each call to \cs{int_value:w}
+% \cs{__kernel_intarray_item:Nn} expands the next, until being stopped
+% by \cs{@@_trig_large_auxiii:w} using \cs{exp_stop_f:}. Once all
+% these blocks are unpacked, the \cs{exp_stop_f:} and $0$ to $7$
+% digits are removed by \cs[no-index]{use_none:n\ldots{}n}.
+% Finally, \cs{@@_trig_large_auxii:w} packs $64$ digits (there are
+% between $65$ and $72$ at this point) into groups of~$4$ and the
+% \texttt{auxv} auxiliary is called.
% \begin{macrocode}
\cs_new:Npn \@@_trig_large:ww #1, #2#3#4#5#6;
{
- \exp_after:wN \@@_trig_large_auxi:wwwwww
- \int_value:w \@@_int_eval:w (#1 - 32) / 64 \exp_after:wN ,
+ \exp_after:wN \@@_trig_large_auxi:w
\int_value:w \@@_int_eval:w (#1 - 4) / 8 \exp_after:wN ,
- \int_value:w #1 \@@_trig_inverse_two_pi: ;
+ \int_value:w #1 , ;
{#2}{#3}{#4}{#5} ;
}
-\cs_new:Npn \@@_trig_large_auxi:wwwwww #1, #2, #3, #4!
+\cs_new:Npn \@@_trig_large_auxi:w #1, #2,
+ {
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \@@_trig_large_auxii:w
+ \cs:w
+ use_none:n \prg_replicate:nn { #2 - #1 * 8 } { n }
+ \exp_after:wN
+ \cs_end:
+ \int_value:w
+ \__kernel_intarray_item:Nn \c_@@_trig_intarray
+ { \@@_int_eval:w #1 + 1 \scan_stop: }
+ \exp_after:wN \@@_trig_large_auxiii:w \int_value:w
+ \__kernel_intarray_item:Nn \c_@@_trig_intarray
+ { \@@_int_eval:w #1 + 2 \scan_stop: }
+ \exp_after:wN \@@_trig_large_auxiii:w \int_value:w
+ \__kernel_intarray_item:Nn \c_@@_trig_intarray
+ { \@@_int_eval:w #1 + 3 \scan_stop: }
+ \exp_after:wN \@@_trig_large_auxiii:w \int_value:w
+ \__kernel_intarray_item:Nn \c_@@_trig_intarray
+ { \@@_int_eval:w #1 + 4 \scan_stop: }
+ \exp_after:wN \@@_trig_large_auxiii:w \int_value:w
+ \__kernel_intarray_item:Nn \c_@@_trig_intarray
+ { \@@_int_eval:w #1 + 5 \scan_stop: }
+ \exp_after:wN \@@_trig_large_auxiii:w \int_value:w
+ \__kernel_intarray_item:Nn \c_@@_trig_intarray
+ { \@@_int_eval:w #1 + 6 \scan_stop: }
+ \exp_after:wN \@@_trig_large_auxiii:w \int_value:w
+ \__kernel_intarray_item:Nn \c_@@_trig_intarray
+ { \@@_int_eval:w #1 + 7 \scan_stop: }
+ \exp_after:wN \@@_trig_large_auxiii:w \int_value:w
+ \__kernel_intarray_item:Nn \c_@@_trig_intarray
+ { \@@_int_eval:w #1 + 8 \scan_stop: }
+ \exp_after:wN \@@_trig_large_auxiii:w \int_value:w
+ \__kernel_intarray_item:Nn \c_@@_trig_intarray
+ { \@@_int_eval:w #1 + 9 \scan_stop: }
+ \exp_stop_f:
+ }
+\cs_new:Npn \@@_trig_large_auxii:w
{
- \prg_replicate:nn {#1} { \@@_trig_large_auxii:ww }
- \prg_replicate:nn { #2 - #1 * 8 }
- { \@@_trig_large_auxiii:wNNNNNNNN }
- \prg_replicate:nn { #3 - #2 * 8 }
- { \@@_trig_large_auxiv:wN }
- \prg_replicate:nn { 8 } { \@@_pack_twice_four:wNNNNNNNN }
- \@@_trig_large_auxv:www
- ;
+ \@@_pack_twice_four:wNNNNNNNN \@@_pack_twice_four:wNNNNNNNN
+ \@@_pack_twice_four:wNNNNNNNN \@@_pack_twice_four:wNNNNNNNN
+ \@@_pack_twice_four:wNNNNNNNN \@@_pack_twice_four:wNNNNNNNN
+ \@@_pack_twice_four:wNNNNNNNN \@@_pack_twice_four:wNNNNNNNN
+ \@@_trig_large_auxv:www ;
}
-\cs_new:Npn \@@_trig_large_auxii:ww #1; #2 ~ { #1; }
-\cs_new:Npn \@@_trig_large_auxiii:wNNNNNNNN
- #1; #2#3#4#5#6#7#8#9 { #1; }
-\cs_new:Npn \@@_trig_large_auxiv:wN #1; #2 { #1; }
+\cs_new:Npn \@@_trig_large_auxiii:w 1 { \exp_stop_f: }
% \end{macrocode}
% \end{macro}
%
@@ -741,7 +828,7 @@
% }
% First come the first $64$~digits of the fractional part of
% $10^{\text{\texttt{\#1}}-16}/(2\pi)$, arranged in $16$~blocks
-% of~$4$, and ending with a semicolon. Then some more digits of the
+% of~$4$, and ending with a semicolon. Then a few more digits of the
% same fractional part, ending with a semicolon, then $4$~blocks of
% $4$~digits holding the significand of the original argument.
% Multiply the $16$-digit significand with the $64$-digit fractional