| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446 |
- This is libc.info, produced by makeinfo version 7.3 from libc.texinfo.
- This is ‘The GNU C Library Reference Manual’, for version 2.43.
- Copyright © 1993-2026 Free Software Foundation, Inc.
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.3 or
- any later version published by the Free Software Foundation; with the
- Invariant Sections being "Free Software Needs Free Documentation" and
- "GNU Lesser General Public License", the Front-Cover texts being "A GNU
- Manual", and with the Back-Cover Texts as in (a) below. A copy of the
- license is included in the section entitled "GNU Free Documentation
- License".
- (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
- modify this GNU manual. Buying copies from the FSF supports it in
- developing GNU and promoting software freedom."
- INFO-DIR-SECTION Software libraries
- START-INFO-DIR-ENTRY
- * Libc: (libc). C library.
- END-INFO-DIR-ENTRY
- INFO-DIR-SECTION GNU C library functions and macros
- START-INFO-DIR-ENTRY
- * ALTWERASE: (libc)Local Modes.
- * ARGP_ERR_UNKNOWN: (libc)Argp Parser Functions.
- * ARG_MAX: (libc)General Limits.
- * BAUD_MAX: (libc)Line Speed.
- * BC_BASE_MAX: (libc)Utility Limits.
- * BC_DIM_MAX: (libc)Utility Limits.
- * BC_SCALE_MAX: (libc)Utility Limits.
- * BC_STRING_MAX: (libc)Utility Limits.
- * BRKINT: (libc)Input Modes.
- * BUFSIZ: (libc)Controlling Buffering.
- * CCTS_OFLOW: (libc)Control Modes.
- * CHAR_BIT: (libc)Width of Type.
- * CHILD_MAX: (libc)General Limits.
- * CIGNORE: (libc)Control Modes.
- * CLK_TCK: (libc)Processor Time.
- * CLOCAL: (libc)Control Modes.
- * CLOCKS_PER_SEC: (libc)CPU Time.
- * CLOCK_BOOTTIME: (libc)Getting the Time.
- * CLOCK_BOOTTIME_ALARM: (libc)Getting the Time.
- * CLOCK_MONOTONIC: (libc)Getting the Time.
- * CLOCK_MONOTONIC_COARSE: (libc)Getting the Time.
- * CLOCK_MONOTONIC_RAW: (libc)Getting the Time.
- * CLOCK_PROCESS_CPUTIME_ID: (libc)Getting the Time.
- * CLOCK_REALTIME: (libc)Getting the Time.
- * CLOCK_REALTIME_ALARM: (libc)Getting the Time.
- * CLOCK_REALTIME_COARSE: (libc)Getting the Time.
- * CLOCK_TAI: (libc)Getting the Time.
- * CLOCK_THREAD_CPUTIME_ID: (libc)Getting the Time.
- * COLL_WEIGHTS_MAX: (libc)Utility Limits.
- * CPU_ALLOC: (libc)CPU Affinity.
- * CPU_ALLOC_SIZE: (libc)CPU Affinity.
- * CPU_AND: (libc)CPU Affinity.
- * CPU_AND_S: (libc)CPU Affinity.
- * CPU_CLR: (libc)CPU Affinity.
- * CPU_CLR_S: (libc)CPU Affinity.
- * CPU_COUNT: (libc)CPU Affinity.
- * CPU_COUNT_S: (libc)CPU Affinity.
- * CPU_EQUAL: (libc)CPU Affinity.
- * CPU_EQUAL_S: (libc)CPU Affinity.
- * CPU_FEATURE_ACTIVE: (libc)X86.
- * CPU_FEATURE_PRESENT: (libc)X86.
- * CPU_FREE: (libc)CPU Affinity.
- * CPU_ISSET: (libc)CPU Affinity.
- * CPU_ISSET_S: (libc)CPU Affinity.
- * CPU_OR: (libc)CPU Affinity.
- * CPU_OR_S: (libc)CPU Affinity.
- * CPU_SET: (libc)CPU Affinity.
- * CPU_SETSIZE: (libc)CPU Affinity.
- * CPU_SET_S: (libc)CPU Affinity.
- * CPU_XOR: (libc)CPU Affinity.
- * CPU_XOR_S: (libc)CPU Affinity.
- * CPU_ZERO: (libc)CPU Affinity.
- * CPU_ZERO_S: (libc)CPU Affinity.
- * CREAD: (libc)Control Modes.
- * CRTS_IFLOW: (libc)Control Modes.
- * CS5: (libc)Control Modes.
- * CS6: (libc)Control Modes.
- * CS7: (libc)Control Modes.
- * CS8: (libc)Control Modes.
- * CSIZE: (libc)Control Modes.
- * CSTOPB: (libc)Control Modes.
- * DLFO_EH_SEGMENT_TYPE: (libc)Dynamic Linker Introspection.
- * DLFO_STRUCT_HAS_EH_COUNT: (libc)Dynamic Linker Introspection.
- * DLFO_STRUCT_HAS_EH_DBASE: (libc)Dynamic Linker Introspection.
- * DTTOIF: (libc)Directory Entries.
- * E2BIG: (libc)Error Codes.
- * EACCES: (libc)Error Codes.
- * EADDRINUSE: (libc)Error Codes.
- * EADDRNOTAVAIL: (libc)Error Codes.
- * EADV: (libc)Error Codes.
- * EAFNOSUPPORT: (libc)Error Codes.
- * EAGAIN: (libc)Error Codes.
- * EALREADY: (libc)Error Codes.
- * EAUTH: (libc)Error Codes.
- * EBACKGROUND: (libc)Error Codes.
- * EBADE: (libc)Error Codes.
- * EBADF: (libc)Error Codes.
- * EBADFD: (libc)Error Codes.
- * EBADMSG: (libc)Error Codes.
- * EBADR: (libc)Error Codes.
- * EBADRPC: (libc)Error Codes.
- * EBADRQC: (libc)Error Codes.
- * EBADSLT: (libc)Error Codes.
- * EBFONT: (libc)Error Codes.
- * EBUSY: (libc)Error Codes.
- * ECANCELED: (libc)Error Codes.
- * ECHILD: (libc)Error Codes.
- * ECHO: (libc)Local Modes.
- * ECHOCTL: (libc)Local Modes.
- * ECHOE: (libc)Local Modes.
- * ECHOK: (libc)Local Modes.
- * ECHOKE: (libc)Local Modes.
- * ECHONL: (libc)Local Modes.
- * ECHOPRT: (libc)Local Modes.
- * ECHRNG: (libc)Error Codes.
- * ECOMM: (libc)Error Codes.
- * ECONNABORTED: (libc)Error Codes.
- * ECONNREFUSED: (libc)Error Codes.
- * ECONNRESET: (libc)Error Codes.
- * ED: (libc)Error Codes.
- * EDEADLK: (libc)Error Codes.
- * EDEADLOCK: (libc)Error Codes.
- * EDESTADDRREQ: (libc)Error Codes.
- * EDIED: (libc)Error Codes.
- * EDOM: (libc)Error Codes.
- * EDOTDOT: (libc)Error Codes.
- * EDQUOT: (libc)Error Codes.
- * EEXIST: (libc)Error Codes.
- * EFAULT: (libc)Error Codes.
- * EFBIG: (libc)Error Codes.
- * EFTYPE: (libc)Error Codes.
- * EGRATUITOUS: (libc)Error Codes.
- * EGREGIOUS: (libc)Error Codes.
- * EHOSTDOWN: (libc)Error Codes.
- * EHOSTUNREACH: (libc)Error Codes.
- * EHWPOISON: (libc)Error Codes.
- * EIDRM: (libc)Error Codes.
- * EIEIO: (libc)Error Codes.
- * EILSEQ: (libc)Error Codes.
- * EINPROGRESS: (libc)Error Codes.
- * EINTR: (libc)Error Codes.
- * EINVAL: (libc)Error Codes.
- * EIO: (libc)Error Codes.
- * EISCONN: (libc)Error Codes.
- * EISDIR: (libc)Error Codes.
- * EISNAM: (libc)Error Codes.
- * EKEYEXPIRED: (libc)Error Codes.
- * EKEYREJECTED: (libc)Error Codes.
- * EKEYREVOKED: (libc)Error Codes.
- * EL2HLT: (libc)Error Codes.
- * EL2NSYNC: (libc)Error Codes.
- * EL3HLT: (libc)Error Codes.
- * EL3RST: (libc)Error Codes.
- * ELIBACC: (libc)Error Codes.
- * ELIBBAD: (libc)Error Codes.
- * ELIBEXEC: (libc)Error Codes.
- * ELIBMAX: (libc)Error Codes.
- * ELIBSCN: (libc)Error Codes.
- * ELNRNG: (libc)Error Codes.
- * ELOOP: (libc)Error Codes.
- * EMEDIUMTYPE: (libc)Error Codes.
- * EMFILE: (libc)Error Codes.
- * EMLINK: (libc)Error Codes.
- * EMSGSIZE: (libc)Error Codes.
- * EMULTIHOP: (libc)Error Codes.
- * ENAMETOOLONG: (libc)Error Codes.
- * ENAVAIL: (libc)Error Codes.
- * ENEEDAUTH: (libc)Error Codes.
- * ENETDOWN: (libc)Error Codes.
- * ENETRESET: (libc)Error Codes.
- * ENETUNREACH: (libc)Error Codes.
- * ENFILE: (libc)Error Codes.
- * ENOANO: (libc)Error Codes.
- * ENOBUFS: (libc)Error Codes.
- * ENOCSI: (libc)Error Codes.
- * ENODATA: (libc)Error Codes.
- * ENODEV: (libc)Error Codes.
- * ENOENT: (libc)Error Codes.
- * ENOEXEC: (libc)Error Codes.
- * ENOKEY: (libc)Error Codes.
- * ENOLCK: (libc)Error Codes.
- * ENOLINK: (libc)Error Codes.
- * ENOMEDIUM: (libc)Error Codes.
- * ENOMEM: (libc)Error Codes.
- * ENOMSG: (libc)Error Codes.
- * ENONET: (libc)Error Codes.
- * ENOPKG: (libc)Error Codes.
- * ENOPROTOOPT: (libc)Error Codes.
- * ENOSPC: (libc)Error Codes.
- * ENOSR: (libc)Error Codes.
- * ENOSTR: (libc)Error Codes.
- * ENOSYS: (libc)Error Codes.
- * ENOTBLK: (libc)Error Codes.
- * ENOTCONN: (libc)Error Codes.
- * ENOTDIR: (libc)Error Codes.
- * ENOTEMPTY: (libc)Error Codes.
- * ENOTNAM: (libc)Error Codes.
- * ENOTRECOVERABLE: (libc)Error Codes.
- * ENOTSOCK: (libc)Error Codes.
- * ENOTSUP: (libc)Error Codes.
- * ENOTTY: (libc)Error Codes.
- * ENOTUNIQ: (libc)Error Codes.
- * ENXIO: (libc)Error Codes.
- * EOF: (libc)EOF and Errors.
- * EOPNOTSUPP: (libc)Error Codes.
- * EOVERFLOW: (libc)Error Codes.
- * EOWNERDEAD: (libc)Error Codes.
- * EPERM: (libc)Error Codes.
- * EPFNOSUPPORT: (libc)Error Codes.
- * EPIPE: (libc)Error Codes.
- * EPROCLIM: (libc)Error Codes.
- * EPROCUNAVAIL: (libc)Error Codes.
- * EPROGMISMATCH: (libc)Error Codes.
- * EPROGUNAVAIL: (libc)Error Codes.
- * EPROTO: (libc)Error Codes.
- * EPROTONOSUPPORT: (libc)Error Codes.
- * EPROTOTYPE: (libc)Error Codes.
- * EQUIV_CLASS_MAX: (libc)Utility Limits.
- * ERANGE: (libc)Error Codes.
- * EREMCHG: (libc)Error Codes.
- * EREMOTE: (libc)Error Codes.
- * EREMOTEIO: (libc)Error Codes.
- * ERESTART: (libc)Error Codes.
- * ERFKILL: (libc)Error Codes.
- * EROFS: (libc)Error Codes.
- * ERPCMISMATCH: (libc)Error Codes.
- * ESHUTDOWN: (libc)Error Codes.
- * ESOCKTNOSUPPORT: (libc)Error Codes.
- * ESPIPE: (libc)Error Codes.
- * ESRCH: (libc)Error Codes.
- * ESRMNT: (libc)Error Codes.
- * ESTALE: (libc)Error Codes.
- * ESTRPIPE: (libc)Error Codes.
- * ETIME: (libc)Error Codes.
- * ETIMEDOUT: (libc)Error Codes.
- * ETOOMANYREFS: (libc)Error Codes.
- * ETXTBSY: (libc)Error Codes.
- * EUCLEAN: (libc)Error Codes.
- * EUNATCH: (libc)Error Codes.
- * EUSERS: (libc)Error Codes.
- * EWOULDBLOCK: (libc)Error Codes.
- * EXDEV: (libc)Error Codes.
- * EXFULL: (libc)Error Codes.
- * EXIT_FAILURE: (libc)Exit Status.
- * EXIT_SUCCESS: (libc)Exit Status.
- * EXPR_NEST_MAX: (libc)Utility Limits.
- * FD_CLOEXEC: (libc)Descriptor Flags.
- * FD_CLR: (libc)Waiting for I/O.
- * FD_ISSET: (libc)Waiting for I/O.
- * FD_SET: (libc)Waiting for I/O.
- * FD_SETSIZE: (libc)Waiting for I/O.
- * FD_ZERO: (libc)Waiting for I/O.
- * FE_SNANS_ALWAYS_SIGNAL: (libc)Infinity and NaN.
- * FILENAME_MAX: (libc)Limits for Files.
- * FLUSHO: (libc)Local Modes.
- * FOPEN_MAX: (libc)Opening Streams.
- * FP_ILOGB0: (libc)Exponents and Logarithms.
- * FP_ILOGBNAN: (libc)Exponents and Logarithms.
- * FP_LLOGB0: (libc)Exponents and Logarithms.
- * FP_LLOGBNAN: (libc)Exponents and Logarithms.
- * F_DUPFD: (libc)Duplicating Descriptors.
- * F_GETFD: (libc)Descriptor Flags.
- * F_GETFL: (libc)Getting File Status Flags.
- * F_GETLK: (libc)File Locks.
- * F_GETOWN: (libc)Interrupt Input.
- * F_OFD_GETLK: (libc)Open File Description Locks.
- * F_OFD_SETLK: (libc)Open File Description Locks.
- * F_OFD_SETLKW: (libc)Open File Description Locks.
- * F_OK: (libc)Testing File Access.
- * F_SETFD: (libc)Descriptor Flags.
- * F_SETFL: (libc)Getting File Status Flags.
- * F_SETLK: (libc)File Locks.
- * F_SETLKW: (libc)File Locks.
- * F_SETOWN: (libc)Interrupt Input.
- * HUGE_VAL: (libc)Math Error Reporting.
- * HUGE_VALF: (libc)Math Error Reporting.
- * HUGE_VALL: (libc)Math Error Reporting.
- * HUGE_VAL_FN: (libc)Math Error Reporting.
- * HUGE_VAL_FNx: (libc)Math Error Reporting.
- * HUPCL: (libc)Control Modes.
- * I: (libc)Complex Numbers.
- * ICANON: (libc)Local Modes.
- * ICRNL: (libc)Input Modes.
- * IEXTEN: (libc)Local Modes.
- * IFNAMSIZ: (libc)Interface Naming.
- * IFTODT: (libc)Directory Entries.
- * IGNBRK: (libc)Input Modes.
- * IGNCR: (libc)Input Modes.
- * IGNPAR: (libc)Input Modes.
- * IMAXBEL: (libc)Input Modes.
- * INADDR_ANY: (libc)Host Address Data Type.
- * INADDR_BROADCAST: (libc)Host Address Data Type.
- * INADDR_LOOPBACK: (libc)Host Address Data Type.
- * INADDR_NONE: (libc)Host Address Data Type.
- * INFINITY: (libc)Infinity and NaN.
- * INLCR: (libc)Input Modes.
- * INPCK: (libc)Input Modes.
- * IPPORT_RESERVED: (libc)Ports.
- * IPPORT_USERRESERVED: (libc)Ports.
- * ISIG: (libc)Local Modes.
- * ISTRIP: (libc)Input Modes.
- * IXANY: (libc)Input Modes.
- * IXOFF: (libc)Input Modes.
- * IXON: (libc)Input Modes.
- * LINE_MAX: (libc)Utility Limits.
- * LINK_MAX: (libc)Limits for Files.
- * L_ctermid: (libc)Identifying the Terminal.
- * L_cuserid: (libc)Who Logged In.
- * L_tmpnam: (libc)Temporary Files.
- * MAXNAMLEN: (libc)Limits for Files.
- * MAXSYMLINKS: (libc)Symbolic Links.
- * MAX_CANON: (libc)Limits for Files.
- * MAX_INPUT: (libc)Limits for Files.
- * MB_CUR_MAX: (libc)Selecting the Conversion.
- * MB_LEN_MAX: (libc)Selecting the Conversion.
- * MDMBUF: (libc)Control Modes.
- * MSG_DONTROUTE: (libc)Socket Data Options.
- * MSG_OOB: (libc)Socket Data Options.
- * MSG_PEEK: (libc)Socket Data Options.
- * NAME_MAX: (libc)Limits for Files.
- * NAN: (libc)Infinity and NaN.
- * NCCS: (libc)Mode Data Types.
- * NGROUPS_MAX: (libc)General Limits.
- * NOFLSH: (libc)Local Modes.
- * NOKERNINFO: (libc)Local Modes.
- * NSIG: (libc)Standard Signals.
- * NULL: (libc)Null Pointer Constant.
- * ONLCR: (libc)Output Modes.
- * ONOEOT: (libc)Output Modes.
- * OPEN_MAX: (libc)General Limits.
- * OPOST: (libc)Output Modes.
- * OXTABS: (libc)Output Modes.
- * O_ACCMODE: (libc)Access Modes.
- * O_APPEND: (libc)Operating Modes.
- * O_ASYNC: (libc)Operating Modes.
- * O_CREAT: (libc)Open-time Flags.
- * O_DIRECTORY: (libc)Open-time Flags.
- * O_EXCL: (libc)Open-time Flags.
- * O_EXEC: (libc)Access Modes.
- * O_EXLOCK: (libc)Open-time Flags.
- * O_FSYNC: (libc)Operating Modes.
- * O_IGNORE_CTTY: (libc)Open-time Flags.
- * O_NDELAY: (libc)Operating Modes.
- * O_NOATIME: (libc)Operating Modes.
- * O_NOCTTY: (libc)Open-time Flags.
- * O_NOFOLLOW: (libc)Open-time Flags.
- * O_NOLINK: (libc)Open-time Flags.
- * O_NONBLOCK: (libc)Open-time Flags.
- * O_NONBLOCK: (libc)Operating Modes.
- * O_NOTRANS: (libc)Open-time Flags.
- * O_PATH: (libc)Access Modes.
- * O_RDONLY: (libc)Access Modes.
- * O_RDWR: (libc)Access Modes.
- * O_READ: (libc)Access Modes.
- * O_SHLOCK: (libc)Open-time Flags.
- * O_SYNC: (libc)Operating Modes.
- * O_TMPFILE: (libc)Open-time Flags.
- * O_TRUNC: (libc)Open-time Flags.
- * O_WRITE: (libc)Access Modes.
- * O_WRONLY: (libc)Access Modes.
- * PARENB: (libc)Control Modes.
- * PARMRK: (libc)Input Modes.
- * PARODD: (libc)Control Modes.
- * PATH_MAX: (libc)Limits for Files.
- * PA_FLAG_MASK: (libc)Parsing a Template String.
- * PENDIN: (libc)Local Modes.
- * PF_FILE: (libc)Local Namespace Details.
- * PF_INET6: (libc)Internet Namespace.
- * PF_INET: (libc)Internet Namespace.
- * PF_LOCAL: (libc)Local Namespace Details.
- * PF_UNIX: (libc)Local Namespace Details.
- * PIPE_BUF: (libc)Limits for Files.
- * PTHREAD_ATTR_NO_SIGMASK_NP: (libc)Initial Thread Signal Mask.
- * P_tmpdir: (libc)Temporary Files.
- * RAND_MAX: (libc)ISO Random.
- * RE_DUP_MAX: (libc)General Limits.
- * RLIM_INFINITY: (libc)Limits on Resources.
- * RSEQ_SIG: (libc)Restartable Sequences.
- * R_OK: (libc)Testing File Access.
- * SA_NOCLDSTOP: (libc)Flags for Sigaction.
- * SA_NOCLDWAIT: (libc)Flags for Sigaction.
- * SA_NODEFER: (libc)Flags for Sigaction.
- * SA_ONSTACK: (libc)Flags for Sigaction.
- * SA_RESETHAND: (libc)Flags for Sigaction.
- * SA_RESTART: (libc)Flags for Sigaction.
- * SA_SIGINFO: (libc)Flags for Sigaction.
- * SEEK_CUR: (libc)File Positioning.
- * SEEK_END: (libc)File Positioning.
- * SEEK_SET: (libc)File Positioning.
- * SIGABRT: (libc)Program Error Signals.
- * SIGALRM: (libc)Alarm Signals.
- * SIGBUS: (libc)Program Error Signals.
- * SIGCHLD: (libc)Job Control Signals.
- * SIGCLD: (libc)Job Control Signals.
- * SIGCONT: (libc)Job Control Signals.
- * SIGEMT: (libc)Program Error Signals.
- * SIGFPE: (libc)Program Error Signals.
- * SIGHUP: (libc)Termination Signals.
- * SIGILL: (libc)Program Error Signals.
- * SIGINFO: (libc)Miscellaneous Signals.
- * SIGINT: (libc)Termination Signals.
- * SIGIO: (libc)Asynchronous I/O Signals.
- * SIGIOT: (libc)Program Error Signals.
- * SIGKILL: (libc)Termination Signals.
- * SIGLOST: (libc)Operation Error Signals.
- * SIGPIPE: (libc)Operation Error Signals.
- * SIGPOLL: (libc)Asynchronous I/O Signals.
- * SIGPROF: (libc)Alarm Signals.
- * SIGPWR: (libc)Miscellaneous Signals.
- * SIGQUIT: (libc)Termination Signals.
- * SIGSEGV: (libc)Program Error Signals.
- * SIGSTKFLT: (libc)Program Error Signals.
- * SIGSTOP: (libc)Job Control Signals.
- * SIGSYS: (libc)Program Error Signals.
- * SIGTERM: (libc)Termination Signals.
- * SIGTRAP: (libc)Program Error Signals.
- * SIGTSTP: (libc)Job Control Signals.
- * SIGTTIN: (libc)Job Control Signals.
- * SIGTTOU: (libc)Job Control Signals.
- * SIGURG: (libc)Asynchronous I/O Signals.
- * SIGUSR1: (libc)Miscellaneous Signals.
- * SIGUSR2: (libc)Miscellaneous Signals.
- * SIGVTALRM: (libc)Alarm Signals.
- * SIGWINCH: (libc)Miscellaneous Signals.
- * SIGXCPU: (libc)Operation Error Signals.
- * SIGXFSZ: (libc)Operation Error Signals.
- * SIG_ERR: (libc)Basic Signal Handling.
- * SNAN: (libc)Infinity and NaN.
- * SNANF: (libc)Infinity and NaN.
- * SNANFN: (libc)Infinity and NaN.
- * SNANFNx: (libc)Infinity and NaN.
- * SNANL: (libc)Infinity and NaN.
- * SOCK_DGRAM: (libc)Communication Styles.
- * SOCK_RAW: (libc)Communication Styles.
- * SOCK_RDM: (libc)Communication Styles.
- * SOCK_SEQPACKET: (libc)Communication Styles.
- * SOCK_STREAM: (libc)Communication Styles.
- * SOL_SOCKET: (libc)Socket-Level Options.
- * SPEED_MAX: (libc)Line Speed.
- * SSIZE_MAX: (libc)General Limits.
- * STREAM_MAX: (libc)General Limits.
- * SUN_LEN: (libc)Local Namespace Details.
- * S_IFMT: (libc)Testing File Type.
- * S_ISBLK: (libc)Testing File Type.
- * S_ISCHR: (libc)Testing File Type.
- * S_ISDIR: (libc)Testing File Type.
- * S_ISFIFO: (libc)Testing File Type.
- * S_ISLNK: (libc)Testing File Type.
- * S_ISREG: (libc)Testing File Type.
- * S_ISSOCK: (libc)Testing File Type.
- * S_TYPEISMQ: (libc)Testing File Type.
- * S_TYPEISSEM: (libc)Testing File Type.
- * S_TYPEISSHM: (libc)Testing File Type.
- * TIME_UTC: (libc)Getting the Time.
- * TMP_MAX: (libc)Temporary Files.
- * TOSTOP: (libc)Local Modes.
- * TZNAME_MAX: (libc)General Limits.
- * VDISCARD: (libc)Other Special.
- * VDSUSP: (libc)Signal Characters.
- * VEOF: (libc)Editing Characters.
- * VEOL2: (libc)Editing Characters.
- * VEOL: (libc)Editing Characters.
- * VERASE: (libc)Editing Characters.
- * VINTR: (libc)Signal Characters.
- * VKILL: (libc)Editing Characters.
- * VLNEXT: (libc)Other Special.
- * VMIN: (libc)Noncanonical Input.
- * VQUIT: (libc)Signal Characters.
- * VREPRINT: (libc)Editing Characters.
- * VSTART: (libc)Start/Stop Characters.
- * VSTATUS: (libc)Other Special.
- * VSTOP: (libc)Start/Stop Characters.
- * VSUSP: (libc)Signal Characters.
- * VTIME: (libc)Noncanonical Input.
- * VWERASE: (libc)Editing Characters.
- * WCHAR_MAX: (libc)Extended Char Intro.
- * WCHAR_MIN: (libc)Extended Char Intro.
- * WCOREDUMP: (libc)Process Completion Status.
- * WEOF: (libc)EOF and Errors.
- * WEOF: (libc)Extended Char Intro.
- * WEXITSTATUS: (libc)Process Completion Status.
- * WIFEXITED: (libc)Process Completion Status.
- * WIFSIGNALED: (libc)Process Completion Status.
- * WIFSTOPPED: (libc)Process Completion Status.
- * WSTOPSIG: (libc)Process Completion Status.
- * WTERMSIG: (libc)Process Completion Status.
- * W_OK: (libc)Testing File Access.
- * X_OK: (libc)Testing File Access.
- * _Complex_I: (libc)Complex Numbers.
- * _Exit: (libc)Termination Internals.
- * _Fork: (libc)Creating a Process.
- * _IOFBF: (libc)Controlling Buffering.
- * _IOLBF: (libc)Controlling Buffering.
- * _IONBF: (libc)Controlling Buffering.
- * _Imaginary_I: (libc)Complex Numbers.
- * _PATH_UTMP: (libc)Manipulating the Database.
- * _PATH_WTMP: (libc)Manipulating the Database.
- * _POSIX2_C_DEV: (libc)System Options.
- * _POSIX2_C_VERSION: (libc)Version Supported.
- * _POSIX2_FORT_DEV: (libc)System Options.
- * _POSIX2_FORT_RUN: (libc)System Options.
- * _POSIX2_LOCALEDEF: (libc)System Options.
- * _POSIX2_SW_DEV: (libc)System Options.
- * _POSIX_CHOWN_RESTRICTED: (libc)Options for Files.
- * _POSIX_JOB_CONTROL: (libc)System Options.
- * _POSIX_NO_TRUNC: (libc)Options for Files.
- * _POSIX_SAVED_IDS: (libc)System Options.
- * _POSIX_VDISABLE: (libc)Options for Files.
- * _POSIX_VERSION: (libc)Version Supported.
- * __fbufsize: (libc)Controlling Buffering.
- * __flbf: (libc)Controlling Buffering.
- * __fpending: (libc)Controlling Buffering.
- * __fpurge: (libc)Flushing Buffers.
- * __freadable: (libc)Opening Streams.
- * __freading: (libc)Opening Streams.
- * __fsetlocking: (libc)Streams and Threads.
- * __fwritable: (libc)Opening Streams.
- * __fwriting: (libc)Opening Streams.
- * __gconv_end_fct: (libc)glibc iconv Implementation.
- * __gconv_fct: (libc)glibc iconv Implementation.
- * __gconv_init_fct: (libc)glibc iconv Implementation.
- * __ppc_get_timebase: (libc)PowerPC.
- * __ppc_get_timebase_freq: (libc)PowerPC.
- * __ppc_mdoio: (libc)PowerPC.
- * __ppc_mdoom: (libc)PowerPC.
- * __ppc_set_ppr_low: (libc)PowerPC.
- * __ppc_set_ppr_med: (libc)PowerPC.
- * __ppc_set_ppr_med_high: (libc)PowerPC.
- * __ppc_set_ppr_med_low: (libc)PowerPC.
- * __ppc_set_ppr_very_low: (libc)PowerPC.
- * __ppc_yield: (libc)PowerPC.
- * __riscv_flush_icache: (libc)RISC-V.
- * __va_copy: (libc)Argument Macros.
- * __x86_get_cpuid_feature_leaf: (libc)X86.
- * _dl_find_object: (libc)Dynamic Linker Introspection.
- * _exit: (libc)Termination Internals.
- * _flushlbf: (libc)Flushing Buffers.
- * _tolower: (libc)Case Conversion.
- * _toupper: (libc)Case Conversion.
- * a64l: (libc)Encode Binary Data.
- * abort: (libc)Aborting a Program.
- * abs: (libc)Absolute Value.
- * accept: (libc)Accepting Connections.
- * access: (libc)Testing File Access.
- * acos: (libc)Inverse Trig Functions.
- * acosf: (libc)Inverse Trig Functions.
- * acosfN: (libc)Inverse Trig Functions.
- * acosfNx: (libc)Inverse Trig Functions.
- * acosh: (libc)Hyperbolic Functions.
- * acoshf: (libc)Hyperbolic Functions.
- * acoshfN: (libc)Hyperbolic Functions.
- * acoshfNx: (libc)Hyperbolic Functions.
- * acoshl: (libc)Hyperbolic Functions.
- * acosl: (libc)Inverse Trig Functions.
- * acospi: (libc)Inverse Trig Functions.
- * acospif: (libc)Inverse Trig Functions.
- * acospifN: (libc)Inverse Trig Functions.
- * acospifNx: (libc)Inverse Trig Functions.
- * acospil: (libc)Inverse Trig Functions.
- * addmntent: (libc)mtab.
- * addseverity: (libc)Adding Severity Classes.
- * adjtime: (libc)Setting and Adjusting the Time.
- * adjtimex: (libc)Setting and Adjusting the Time.
- * aio_cancel64: (libc)Cancel AIO Operations.
- * aio_cancel: (libc)Cancel AIO Operations.
- * aio_error64: (libc)Status of AIO Operations.
- * aio_error: (libc)Status of AIO Operations.
- * aio_fsync64: (libc)Synchronizing AIO Operations.
- * aio_fsync: (libc)Synchronizing AIO Operations.
- * aio_init: (libc)Configuration of AIO.
- * aio_read64: (libc)Asynchronous Reads/Writes.
- * aio_read: (libc)Asynchronous Reads/Writes.
- * aio_return64: (libc)Status of AIO Operations.
- * aio_return: (libc)Status of AIO Operations.
- * aio_suspend64: (libc)Synchronizing AIO Operations.
- * aio_suspend: (libc)Synchronizing AIO Operations.
- * aio_write64: (libc)Asynchronous Reads/Writes.
- * aio_write: (libc)Asynchronous Reads/Writes.
- * alarm: (libc)Setting an Alarm.
- * aligned_alloc: (libc)Aligned Memory Blocks.
- * alloca: (libc)Variable Size Automatic.
- * alphasort64: (libc)Scanning Directory Content.
- * alphasort: (libc)Scanning Directory Content.
- * arc4random: (libc)High Quality Random.
- * arc4random_buf: (libc)High Quality Random.
- * arc4random_uniform: (libc)High Quality Random.
- * argp_error: (libc)Argp Helper Functions.
- * argp_failure: (libc)Argp Helper Functions.
- * argp_help: (libc)Argp Help.
- * argp_parse: (libc)Argp.
- * argp_state_help: (libc)Argp Helper Functions.
- * argp_usage: (libc)Argp Helper Functions.
- * argz_add: (libc)Argz Functions.
- * argz_add_sep: (libc)Argz Functions.
- * argz_append: (libc)Argz Functions.
- * argz_count: (libc)Argz Functions.
- * argz_create: (libc)Argz Functions.
- * argz_create_sep: (libc)Argz Functions.
- * argz_delete: (libc)Argz Functions.
- * argz_extract: (libc)Argz Functions.
- * argz_insert: (libc)Argz Functions.
- * argz_next: (libc)Argz Functions.
- * argz_replace: (libc)Argz Functions.
- * argz_stringify: (libc)Argz Functions.
- * asctime: (libc)Formatting Calendar Time.
- * asctime_r: (libc)Formatting Calendar Time.
- * asin: (libc)Inverse Trig Functions.
- * asinf: (libc)Inverse Trig Functions.
- * asinfN: (libc)Inverse Trig Functions.
- * asinfNx: (libc)Inverse Trig Functions.
- * asinh: (libc)Hyperbolic Functions.
- * asinhf: (libc)Hyperbolic Functions.
- * asinhfN: (libc)Hyperbolic Functions.
- * asinhfNx: (libc)Hyperbolic Functions.
- * asinhl: (libc)Hyperbolic Functions.
- * asinl: (libc)Inverse Trig Functions.
- * asinpi: (libc)Inverse Trig Functions.
- * asinpif: (libc)Inverse Trig Functions.
- * asinpifN: (libc)Inverse Trig Functions.
- * asinpifNx: (libc)Inverse Trig Functions.
- * asinpil: (libc)Inverse Trig Functions.
- * asprintf: (libc)Dynamic Output.
- * assert: (libc)Consistency Checking.
- * assert_perror: (libc)Consistency Checking.
- * atan2: (libc)Inverse Trig Functions.
- * atan2f: (libc)Inverse Trig Functions.
- * atan2fN: (libc)Inverse Trig Functions.
- * atan2fNx: (libc)Inverse Trig Functions.
- * atan2l: (libc)Inverse Trig Functions.
- * atan2pi: (libc)Inverse Trig Functions.
- * atan2pif: (libc)Inverse Trig Functions.
- * atan2pifN: (libc)Inverse Trig Functions.
- * atan2pifNx: (libc)Inverse Trig Functions.
- * atan2pil: (libc)Inverse Trig Functions.
- * atan: (libc)Inverse Trig Functions.
- * atanf: (libc)Inverse Trig Functions.
- * atanfN: (libc)Inverse Trig Functions.
- * atanfNx: (libc)Inverse Trig Functions.
- * atanh: (libc)Hyperbolic Functions.
- * atanhf: (libc)Hyperbolic Functions.
- * atanhfN: (libc)Hyperbolic Functions.
- * atanhfNx: (libc)Hyperbolic Functions.
- * atanhl: (libc)Hyperbolic Functions.
- * atanl: (libc)Inverse Trig Functions.
- * atanpi: (libc)Inverse Trig Functions.
- * atanpif: (libc)Inverse Trig Functions.
- * atanpifN: (libc)Inverse Trig Functions.
- * atanpifNx: (libc)Inverse Trig Functions.
- * atanpil: (libc)Inverse Trig Functions.
- * atexit: (libc)Cleanups on Exit.
- * atof: (libc)Parsing of Floats.
- * atoi: (libc)Parsing of Integers.
- * atol: (libc)Parsing of Integers.
- * atoll: (libc)Parsing of Integers.
- * backtrace: (libc)Backtraces.
- * backtrace_symbols: (libc)Backtraces.
- * backtrace_symbols_fd: (libc)Backtraces.
- * basename: (libc)Finding Tokens in a String.
- * basename: (libc)Finding Tokens in a String.
- * bcmp: (libc)String/Array Comparison.
- * bcopy: (libc)Copying Strings and Arrays.
- * bind: (libc)Setting Address.
- * bind_textdomain_codeset: (libc)Charset conversion in gettext.
- * bindtextdomain: (libc)Locating gettext catalog.
- * brk: (libc)Resizing the Data Segment.
- * bsearch: (libc)Array Search Function.
- * btowc: (libc)Converting a Character.
- * bzero: (libc)Copying Strings and Arrays.
- * cabs: (libc)Absolute Value.
- * cabsf: (libc)Absolute Value.
- * cabsfN: (libc)Absolute Value.
- * cabsfNx: (libc)Absolute Value.
- * cabsl: (libc)Absolute Value.
- * cacos: (libc)Inverse Trig Functions.
- * cacosf: (libc)Inverse Trig Functions.
- * cacosfN: (libc)Inverse Trig Functions.
- * cacosfNx: (libc)Inverse Trig Functions.
- * cacosh: (libc)Hyperbolic Functions.
- * cacoshf: (libc)Hyperbolic Functions.
- * cacoshfN: (libc)Hyperbolic Functions.
- * cacoshfNx: (libc)Hyperbolic Functions.
- * cacoshl: (libc)Hyperbolic Functions.
- * cacosl: (libc)Inverse Trig Functions.
- * call_once: (libc)Call Once.
- * calloc: (libc)Allocating Cleared Space.
- * canonicalize: (libc)FP Bit Twiddling.
- * canonicalize_file_name: (libc)Symbolic Links.
- * canonicalizef: (libc)FP Bit Twiddling.
- * canonicalizefN: (libc)FP Bit Twiddling.
- * canonicalizefNx: (libc)FP Bit Twiddling.
- * canonicalizel: (libc)FP Bit Twiddling.
- * carg: (libc)Operations on Complex.
- * cargf: (libc)Operations on Complex.
- * cargfN: (libc)Operations on Complex.
- * cargfNx: (libc)Operations on Complex.
- * cargl: (libc)Operations on Complex.
- * casin: (libc)Inverse Trig Functions.
- * casinf: (libc)Inverse Trig Functions.
- * casinfN: (libc)Inverse Trig Functions.
- * casinfNx: (libc)Inverse Trig Functions.
- * casinh: (libc)Hyperbolic Functions.
- * casinhf: (libc)Hyperbolic Functions.
- * casinhfN: (libc)Hyperbolic Functions.
- * casinhfNx: (libc)Hyperbolic Functions.
- * casinhl: (libc)Hyperbolic Functions.
- * casinl: (libc)Inverse Trig Functions.
- * catan: (libc)Inverse Trig Functions.
- * catanf: (libc)Inverse Trig Functions.
- * catanfN: (libc)Inverse Trig Functions.
- * catanfNx: (libc)Inverse Trig Functions.
- * catanh: (libc)Hyperbolic Functions.
- * catanhf: (libc)Hyperbolic Functions.
- * catanhfN: (libc)Hyperbolic Functions.
- * catanhfNx: (libc)Hyperbolic Functions.
- * catanhl: (libc)Hyperbolic Functions.
- * catanl: (libc)Inverse Trig Functions.
- * catclose: (libc)The catgets Functions.
- * catgets: (libc)The catgets Functions.
- * catopen: (libc)The catgets Functions.
- * cbrt: (libc)Exponents and Logarithms.
- * cbrtf: (libc)Exponents and Logarithms.
- * cbrtfN: (libc)Exponents and Logarithms.
- * cbrtfNx: (libc)Exponents and Logarithms.
- * cbrtl: (libc)Exponents and Logarithms.
- * ccos: (libc)Trig Functions.
- * ccosf: (libc)Trig Functions.
- * ccosfN: (libc)Trig Functions.
- * ccosfNx: (libc)Trig Functions.
- * ccosh: (libc)Hyperbolic Functions.
- * ccoshf: (libc)Hyperbolic Functions.
- * ccoshfN: (libc)Hyperbolic Functions.
- * ccoshfNx: (libc)Hyperbolic Functions.
- * ccoshl: (libc)Hyperbolic Functions.
- * ccosl: (libc)Trig Functions.
- * ceil: (libc)Rounding Functions.
- * ceilf: (libc)Rounding Functions.
- * ceilfN: (libc)Rounding Functions.
- * ceilfNx: (libc)Rounding Functions.
- * ceill: (libc)Rounding Functions.
- * cexp: (libc)Exponents and Logarithms.
- * cexpf: (libc)Exponents and Logarithms.
- * cexpfN: (libc)Exponents and Logarithms.
- * cexpfNx: (libc)Exponents and Logarithms.
- * cexpl: (libc)Exponents and Logarithms.
- * cfgetibaud: (libc)Line Speed.
- * cfgetispeed: (libc)Line Speed.
- * cfgetobaud: (libc)Line Speed.
- * cfgetospeed: (libc)Line Speed.
- * cfmakeraw: (libc)Noncanonical Input.
- * cfsetbaud: (libc)Line Speed.
- * cfsetibaud: (libc)Line Speed.
- * cfsetispeed: (libc)Line Speed.
- * cfsetobaud: (libc)Line Speed.
- * cfsetospeed: (libc)Line Speed.
- * cfsetspeed: (libc)Line Speed.
- * chdir: (libc)Working Directory.
- * chmod: (libc)Setting Permissions.
- * chown: (libc)File Owner.
- * cimag: (libc)Operations on Complex.
- * cimagf: (libc)Operations on Complex.
- * cimagfN: (libc)Operations on Complex.
- * cimagfNx: (libc)Operations on Complex.
- * cimagl: (libc)Operations on Complex.
- * clearenv: (libc)Environment Access.
- * clearerr: (libc)Error Recovery.
- * clearerr_unlocked: (libc)Error Recovery.
- * clock: (libc)CPU Time.
- * clock_getres: (libc)Getting the Time.
- * clock_gettime: (libc)Getting the Time.
- * clock_nanosleep: (libc)Sleeping.
- * clock_settime: (libc)Setting and Adjusting the Time.
- * clog10: (libc)Exponents and Logarithms.
- * clog10f: (libc)Exponents and Logarithms.
- * clog10fN: (libc)Exponents and Logarithms.
- * clog10fNx: (libc)Exponents and Logarithms.
- * clog10l: (libc)Exponents and Logarithms.
- * clog: (libc)Exponents and Logarithms.
- * clogf: (libc)Exponents and Logarithms.
- * clogfN: (libc)Exponents and Logarithms.
- * clogfNx: (libc)Exponents and Logarithms.
- * clogl: (libc)Exponents and Logarithms.
- * close: (libc)Opening and Closing Files.
- * close_range: (libc)Opening and Closing Files.
- * closedir: (libc)Reading/Closing Directory.
- * closefrom: (libc)Opening and Closing Files.
- * closelog: (libc)closelog.
- * cnd_broadcast: (libc)ISO C Condition Variables.
- * cnd_destroy: (libc)ISO C Condition Variables.
- * cnd_init: (libc)ISO C Condition Variables.
- * cnd_signal: (libc)ISO C Condition Variables.
- * cnd_timedwait: (libc)ISO C Condition Variables.
- * cnd_wait: (libc)ISO C Condition Variables.
- * compoundn: (libc)Exponents and Logarithms.
- * compoundnf: (libc)Exponents and Logarithms.
- * compoundnfN: (libc)Exponents and Logarithms.
- * compoundnfNx: (libc)Exponents and Logarithms.
- * compoundnl: (libc)Exponents and Logarithms.
- * confstr: (libc)String Parameters.
- * conj: (libc)Operations on Complex.
- * conjf: (libc)Operations on Complex.
- * conjfN: (libc)Operations on Complex.
- * conjfNx: (libc)Operations on Complex.
- * conjl: (libc)Operations on Complex.
- * connect: (libc)Connecting.
- * copy_file_range: (libc)Copying File Data.
- * copysign: (libc)FP Bit Twiddling.
- * copysignf: (libc)FP Bit Twiddling.
- * copysignfN: (libc)FP Bit Twiddling.
- * copysignfNx: (libc)FP Bit Twiddling.
- * copysignl: (libc)FP Bit Twiddling.
- * cos: (libc)Trig Functions.
- * cosf: (libc)Trig Functions.
- * cosfN: (libc)Trig Functions.
- * cosfNx: (libc)Trig Functions.
- * cosh: (libc)Hyperbolic Functions.
- * coshf: (libc)Hyperbolic Functions.
- * coshfN: (libc)Hyperbolic Functions.
- * coshfNx: (libc)Hyperbolic Functions.
- * coshl: (libc)Hyperbolic Functions.
- * cosl: (libc)Trig Functions.
- * cospi: (libc)Trig Functions.
- * cospif: (libc)Trig Functions.
- * cospifN: (libc)Trig Functions.
- * cospifNx: (libc)Trig Functions.
- * cospil: (libc)Trig Functions.
- * cpow: (libc)Exponents and Logarithms.
- * cpowf: (libc)Exponents and Logarithms.
- * cpowfN: (libc)Exponents and Logarithms.
- * cpowfNx: (libc)Exponents and Logarithms.
- * cpowl: (libc)Exponents and Logarithms.
- * cproj: (libc)Operations on Complex.
- * cprojf: (libc)Operations on Complex.
- * cprojfN: (libc)Operations on Complex.
- * cprojfNx: (libc)Operations on Complex.
- * cprojl: (libc)Operations on Complex.
- * creal: (libc)Operations on Complex.
- * crealf: (libc)Operations on Complex.
- * crealfN: (libc)Operations on Complex.
- * crealfNx: (libc)Operations on Complex.
- * creall: (libc)Operations on Complex.
- * creat64: (libc)Opening and Closing Files.
- * creat: (libc)Opening and Closing Files.
- * csin: (libc)Trig Functions.
- * csinf: (libc)Trig Functions.
- * csinfN: (libc)Trig Functions.
- * csinfNx: (libc)Trig Functions.
- * csinh: (libc)Hyperbolic Functions.
- * csinhf: (libc)Hyperbolic Functions.
- * csinhfN: (libc)Hyperbolic Functions.
- * csinhfNx: (libc)Hyperbolic Functions.
- * csinhl: (libc)Hyperbolic Functions.
- * csinl: (libc)Trig Functions.
- * csqrt: (libc)Exponents and Logarithms.
- * csqrtf: (libc)Exponents and Logarithms.
- * csqrtfN: (libc)Exponents and Logarithms.
- * csqrtfNx: (libc)Exponents and Logarithms.
- * csqrtl: (libc)Exponents and Logarithms.
- * ctan: (libc)Trig Functions.
- * ctanf: (libc)Trig Functions.
- * ctanfN: (libc)Trig Functions.
- * ctanfNx: (libc)Trig Functions.
- * ctanh: (libc)Hyperbolic Functions.
- * ctanhf: (libc)Hyperbolic Functions.
- * ctanhfN: (libc)Hyperbolic Functions.
- * ctanhfNx: (libc)Hyperbolic Functions.
- * ctanhl: (libc)Hyperbolic Functions.
- * ctanl: (libc)Trig Functions.
- * ctermid: (libc)Identifying the Terminal.
- * ctime: (libc)Formatting Calendar Time.
- * ctime_r: (libc)Formatting Calendar Time.
- * cuserid: (libc)Who Logged In.
- * daddl: (libc)Misc FP Arithmetic.
- * dcgettext: (libc)Translation with gettext.
- * dcngettext: (libc)Advanced gettext functions.
- * ddivl: (libc)Misc FP Arithmetic.
- * dfmal: (libc)Misc FP Arithmetic.
- * dgettext: (libc)Translation with gettext.
- * difftime: (libc)Calculating Elapsed Time.
- * dirfd: (libc)Opening a Directory.
- * dirname: (libc)Finding Tokens in a String.
- * div: (libc)Integer Division.
- * dlinfo: (libc)Dynamic Linker Introspection.
- * dmull: (libc)Misc FP Arithmetic.
- * dngettext: (libc)Advanced gettext functions.
- * dprintf: (libc)Formatted Output Functions.
- * drand48: (libc)SVID Random.
- * drand48_r: (libc)SVID Random.
- * drem: (libc)Remainder Functions.
- * dremf: (libc)Remainder Functions.
- * dreml: (libc)Remainder Functions.
- * dsqrtl: (libc)Misc FP Arithmetic.
- * dsubl: (libc)Misc FP Arithmetic.
- * dup2: (libc)Duplicating Descriptors.
- * dup3: (libc)Duplicating Descriptors.
- * dup: (libc)Duplicating Descriptors.
- * ecvt: (libc)System V Number Conversion.
- * ecvt_r: (libc)System V Number Conversion.
- * endfsent: (libc)fstab.
- * endgrent: (libc)Scanning All Groups.
- * endhostent: (libc)Host Names.
- * endmntent: (libc)mtab.
- * endnetent: (libc)Networks Database.
- * endnetgrent: (libc)Lookup Netgroup.
- * endprotoent: (libc)Protocols Database.
- * endpwent: (libc)Scanning All Users.
- * endservent: (libc)Services Database.
- * endutent: (libc)Manipulating the Database.
- * endutxent: (libc)XPG Functions.
- * envz_add: (libc)Envz Functions.
- * envz_entry: (libc)Envz Functions.
- * envz_get: (libc)Envz Functions.
- * envz_merge: (libc)Envz Functions.
- * envz_remove: (libc)Envz Functions.
- * envz_strip: (libc)Envz Functions.
- * epoll_create: (libc)Other Low-Level I/O APIs.
- * epoll_wait: (libc)Other Low-Level I/O APIs.
- * erand48: (libc)SVID Random.
- * erand48_r: (libc)SVID Random.
- * erf: (libc)Special Functions.
- * erfc: (libc)Special Functions.
- * erfcf: (libc)Special Functions.
- * erfcfN: (libc)Special Functions.
- * erfcfNx: (libc)Special Functions.
- * erfcl: (libc)Special Functions.
- * erff: (libc)Special Functions.
- * erffN: (libc)Special Functions.
- * erffNx: (libc)Special Functions.
- * erfl: (libc)Special Functions.
- * err: (libc)Error Messages.
- * errno: (libc)Checking for Errors.
- * error: (libc)Error Messages.
- * error_at_line: (libc)Error Messages.
- * errx: (libc)Error Messages.
- * execl: (libc)Executing a File.
- * execle: (libc)Executing a File.
- * execlp: (libc)Executing a File.
- * execv: (libc)Executing a File.
- * execve: (libc)Executing a File.
- * execvp: (libc)Executing a File.
- * exit: (libc)Normal Termination.
- * exp10: (libc)Exponents and Logarithms.
- * exp10f: (libc)Exponents and Logarithms.
- * exp10fN: (libc)Exponents and Logarithms.
- * exp10fNx: (libc)Exponents and Logarithms.
- * exp10l: (libc)Exponents and Logarithms.
- * exp10m1: (libc)Exponents and Logarithms.
- * exp10m1f: (libc)Exponents and Logarithms.
- * exp10m1fN: (libc)Exponents and Logarithms.
- * exp10m1fNx: (libc)Exponents and Logarithms.
- * exp10m1l: (libc)Exponents and Logarithms.
- * exp2: (libc)Exponents and Logarithms.
- * exp2f: (libc)Exponents and Logarithms.
- * exp2fN: (libc)Exponents and Logarithms.
- * exp2fNx: (libc)Exponents and Logarithms.
- * exp2l: (libc)Exponents and Logarithms.
- * exp2m1: (libc)Exponents and Logarithms.
- * exp2m1f: (libc)Exponents and Logarithms.
- * exp2m1fN: (libc)Exponents and Logarithms.
- * exp2m1fNx: (libc)Exponents and Logarithms.
- * exp2m1l: (libc)Exponents and Logarithms.
- * exp: (libc)Exponents and Logarithms.
- * expf: (libc)Exponents and Logarithms.
- * expfN: (libc)Exponents and Logarithms.
- * expfNx: (libc)Exponents and Logarithms.
- * expl: (libc)Exponents and Logarithms.
- * explicit_bzero: (libc)Erasing Sensitive Data.
- * expm1: (libc)Exponents and Logarithms.
- * expm1f: (libc)Exponents and Logarithms.
- * expm1fN: (libc)Exponents and Logarithms.
- * expm1fNx: (libc)Exponents and Logarithms.
- * expm1l: (libc)Exponents and Logarithms.
- * fMaddfN: (libc)Misc FP Arithmetic.
- * fMaddfNx: (libc)Misc FP Arithmetic.
- * fMdivfN: (libc)Misc FP Arithmetic.
- * fMdivfNx: (libc)Misc FP Arithmetic.
- * fMfmafN: (libc)Misc FP Arithmetic.
- * fMfmafNx: (libc)Misc FP Arithmetic.
- * fMmulfN: (libc)Misc FP Arithmetic.
- * fMmulfNx: (libc)Misc FP Arithmetic.
- * fMsqrtfN: (libc)Misc FP Arithmetic.
- * fMsqrtfNx: (libc)Misc FP Arithmetic.
- * fMsubfN: (libc)Misc FP Arithmetic.
- * fMsubfNx: (libc)Misc FP Arithmetic.
- * fMxaddfN: (libc)Misc FP Arithmetic.
- * fMxaddfNx: (libc)Misc FP Arithmetic.
- * fMxdivfN: (libc)Misc FP Arithmetic.
- * fMxdivfNx: (libc)Misc FP Arithmetic.
- * fMxfmafN: (libc)Misc FP Arithmetic.
- * fMxfmafNx: (libc)Misc FP Arithmetic.
- * fMxmulfN: (libc)Misc FP Arithmetic.
- * fMxmulfNx: (libc)Misc FP Arithmetic.
- * fMxsqrtfN: (libc)Misc FP Arithmetic.
- * fMxsqrtfNx: (libc)Misc FP Arithmetic.
- * fMxsubfN: (libc)Misc FP Arithmetic.
- * fMxsubfNx: (libc)Misc FP Arithmetic.
- * fabs: (libc)Absolute Value.
- * fabsf: (libc)Absolute Value.
- * fabsfN: (libc)Absolute Value.
- * fabsfNx: (libc)Absolute Value.
- * fabsl: (libc)Absolute Value.
- * faccessat: (libc)Testing File Access.
- * fadd: (libc)Misc FP Arithmetic.
- * faddl: (libc)Misc FP Arithmetic.
- * fchdir: (libc)Working Directory.
- * fchmod: (libc)Setting Permissions.
- * fchown: (libc)File Owner.
- * fclose: (libc)Closing Streams.
- * fcloseall: (libc)Closing Streams.
- * fcntl: (libc)Control Operations.
- * fcvt: (libc)System V Number Conversion.
- * fcvt_r: (libc)System V Number Conversion.
- * fdatasync: (libc)Synchronizing I/O.
- * fdim: (libc)Misc FP Arithmetic.
- * fdimf: (libc)Misc FP Arithmetic.
- * fdimfN: (libc)Misc FP Arithmetic.
- * fdimfNx: (libc)Misc FP Arithmetic.
- * fdiml: (libc)Misc FP Arithmetic.
- * fdiv: (libc)Misc FP Arithmetic.
- * fdivl: (libc)Misc FP Arithmetic.
- * fdopen: (libc)Descriptors and Streams.
- * fdopendir: (libc)Opening a Directory.
- * feclearexcept: (libc)Status bit operations.
- * fedisableexcept: (libc)Control Functions.
- * feenableexcept: (libc)Control Functions.
- * fegetenv: (libc)Control Functions.
- * fegetexcept: (libc)Control Functions.
- * fegetexceptflag: (libc)Status bit operations.
- * fegetmode: (libc)Control Functions.
- * fegetround: (libc)Rounding.
- * feholdexcept: (libc)Control Functions.
- * feof: (libc)EOF and Errors.
- * feof_unlocked: (libc)EOF and Errors.
- * feraiseexcept: (libc)Status bit operations.
- * ferror: (libc)EOF and Errors.
- * ferror_unlocked: (libc)EOF and Errors.
- * fesetenv: (libc)Control Functions.
- * fesetexcept: (libc)Status bit operations.
- * fesetexceptflag: (libc)Status bit operations.
- * fesetmode: (libc)Control Functions.
- * fesetround: (libc)Rounding.
- * fetestexcept: (libc)Status bit operations.
- * fetestexceptflag: (libc)Status bit operations.
- * feupdateenv: (libc)Control Functions.
- * fexecve: (libc)Executing a File.
- * fflush: (libc)Flushing Buffers.
- * fflush_unlocked: (libc)Flushing Buffers.
- * ffma: (libc)Misc FP Arithmetic.
- * ffmal: (libc)Misc FP Arithmetic.
- * fgetc: (libc)Character Input.
- * fgetc_unlocked: (libc)Character Input.
- * fgetgrent: (libc)Scanning All Groups.
- * fgetgrent_r: (libc)Scanning All Groups.
- * fgetpos64: (libc)Portable Positioning.
- * fgetpos: (libc)Portable Positioning.
- * fgetpwent: (libc)Scanning All Users.
- * fgetpwent_r: (libc)Scanning All Users.
- * fgets: (libc)Line Input.
- * fgets_unlocked: (libc)Line Input.
- * fgetwc: (libc)Character Input.
- * fgetwc_unlocked: (libc)Character Input.
- * fgetws: (libc)Line Input.
- * fgetws_unlocked: (libc)Line Input.
- * fileno: (libc)Descriptors and Streams.
- * fileno_unlocked: (libc)Descriptors and Streams.
- * finite: (libc)Floating Point Classes.
- * finitef: (libc)Floating Point Classes.
- * finitel: (libc)Floating Point Classes.
- * flockfile: (libc)Streams and Threads.
- * floor: (libc)Rounding Functions.
- * floorf: (libc)Rounding Functions.
- * floorfN: (libc)Rounding Functions.
- * floorfNx: (libc)Rounding Functions.
- * floorl: (libc)Rounding Functions.
- * fma: (libc)Misc FP Arithmetic.
- * fmaf: (libc)Misc FP Arithmetic.
- * fmafN: (libc)Misc FP Arithmetic.
- * fmafNx: (libc)Misc FP Arithmetic.
- * fmal: (libc)Misc FP Arithmetic.
- * fmax: (libc)Misc FP Arithmetic.
- * fmaxf: (libc)Misc FP Arithmetic.
- * fmaxfN: (libc)Misc FP Arithmetic.
- * fmaxfNx: (libc)Misc FP Arithmetic.
- * fmaximum: (libc)Misc FP Arithmetic.
- * fmaximum_mag: (libc)Misc FP Arithmetic.
- * fmaximum_mag_num: (libc)Misc FP Arithmetic.
- * fmaximum_mag_numf: (libc)Misc FP Arithmetic.
- * fmaximum_mag_numfN: (libc)Misc FP Arithmetic.
- * fmaximum_mag_numfNx: (libc)Misc FP Arithmetic.
- * fmaximum_mag_numl: (libc)Misc FP Arithmetic.
- * fmaximum_magf: (libc)Misc FP Arithmetic.
- * fmaximum_magfN: (libc)Misc FP Arithmetic.
- * fmaximum_magfNx: (libc)Misc FP Arithmetic.
- * fmaximum_magl: (libc)Misc FP Arithmetic.
- * fmaximum_num: (libc)Misc FP Arithmetic.
- * fmaximum_numf: (libc)Misc FP Arithmetic.
- * fmaximum_numfN: (libc)Misc FP Arithmetic.
- * fmaximum_numfNx: (libc)Misc FP Arithmetic.
- * fmaximum_numl: (libc)Misc FP Arithmetic.
- * fmaximumf: (libc)Misc FP Arithmetic.
- * fmaximumfN: (libc)Misc FP Arithmetic.
- * fmaximumfNx: (libc)Misc FP Arithmetic.
- * fmaximuml: (libc)Misc FP Arithmetic.
- * fmaxl: (libc)Misc FP Arithmetic.
- * fmaxmag: (libc)Misc FP Arithmetic.
- * fmaxmagf: (libc)Misc FP Arithmetic.
- * fmaxmagfN: (libc)Misc FP Arithmetic.
- * fmaxmagfNx: (libc)Misc FP Arithmetic.
- * fmaxmagl: (libc)Misc FP Arithmetic.
- * fmemopen: (libc)String Streams.
- * fmin: (libc)Misc FP Arithmetic.
- * fminf: (libc)Misc FP Arithmetic.
- * fminfN: (libc)Misc FP Arithmetic.
- * fminfNx: (libc)Misc FP Arithmetic.
- * fminimum: (libc)Misc FP Arithmetic.
- * fminimum_mag: (libc)Misc FP Arithmetic.
- * fminimum_mag_num: (libc)Misc FP Arithmetic.
- * fminimum_mag_numf: (libc)Misc FP Arithmetic.
- * fminimum_mag_numfN: (libc)Misc FP Arithmetic.
- * fminimum_mag_numfNx: (libc)Misc FP Arithmetic.
- * fminimum_mag_numl: (libc)Misc FP Arithmetic.
- * fminimum_magf: (libc)Misc FP Arithmetic.
- * fminimum_magfN: (libc)Misc FP Arithmetic.
- * fminimum_magfNx: (libc)Misc FP Arithmetic.
- * fminimum_magl: (libc)Misc FP Arithmetic.
- * fminimum_num: (libc)Misc FP Arithmetic.
- * fminimum_numf: (libc)Misc FP Arithmetic.
- * fminimum_numfN: (libc)Misc FP Arithmetic.
- * fminimum_numfNx: (libc)Misc FP Arithmetic.
- * fminimum_numl: (libc)Misc FP Arithmetic.
- * fminimumf: (libc)Misc FP Arithmetic.
- * fminimumfN: (libc)Misc FP Arithmetic.
- * fminimumfNx: (libc)Misc FP Arithmetic.
- * fminimuml: (libc)Misc FP Arithmetic.
- * fminl: (libc)Misc FP Arithmetic.
- * fminmag: (libc)Misc FP Arithmetic.
- * fminmagf: (libc)Misc FP Arithmetic.
- * fminmagfN: (libc)Misc FP Arithmetic.
- * fminmagfNx: (libc)Misc FP Arithmetic.
- * fminmagl: (libc)Misc FP Arithmetic.
- * fmod: (libc)Remainder Functions.
- * fmodf: (libc)Remainder Functions.
- * fmodfN: (libc)Remainder Functions.
- * fmodfNx: (libc)Remainder Functions.
- * fmodl: (libc)Remainder Functions.
- * fmtmsg: (libc)Printing Formatted Messages.
- * fmul: (libc)Misc FP Arithmetic.
- * fmull: (libc)Misc FP Arithmetic.
- * fnmatch: (libc)Wildcard Matching.
- * fopen64: (libc)Opening Streams.
- * fopen: (libc)Opening Streams.
- * fopencookie: (libc)Streams and Cookies.
- * fork: (libc)Creating a Process.
- * forkpty: (libc)Pseudo-Terminal Pairs.
- * fpathconf: (libc)Pathconf.
- * fpclassify: (libc)Floating Point Classes.
- * fprintf: (libc)Formatted Output Functions.
- * fputc: (libc)Simple Output.
- * fputc_unlocked: (libc)Simple Output.
- * fputs: (libc)Simple Output.
- * fputs_unlocked: (libc)Simple Output.
- * fputwc: (libc)Simple Output.
- * fputwc_unlocked: (libc)Simple Output.
- * fputws: (libc)Simple Output.
- * fputws_unlocked: (libc)Simple Output.
- * fread: (libc)Block Input/Output.
- * fread_unlocked: (libc)Block Input/Output.
- * free: (libc)Freeing after Malloc.
- * free_aligned_sized: (libc)Freeing after Malloc.
- * free_sized: (libc)Freeing after Malloc.
- * freopen64: (libc)Opening Streams.
- * freopen: (libc)Opening Streams.
- * frexp: (libc)Normalization Functions.
- * frexpf: (libc)Normalization Functions.
- * frexpfN: (libc)Normalization Functions.
- * frexpfNx: (libc)Normalization Functions.
- * frexpl: (libc)Normalization Functions.
- * fromfp: (libc)Rounding Functions.
- * fromfpf: (libc)Rounding Functions.
- * fromfpfN: (libc)Rounding Functions.
- * fromfpfNx: (libc)Rounding Functions.
- * fromfpl: (libc)Rounding Functions.
- * fromfpx: (libc)Rounding Functions.
- * fromfpxf: (libc)Rounding Functions.
- * fromfpxfN: (libc)Rounding Functions.
- * fromfpxfNx: (libc)Rounding Functions.
- * fromfpxl: (libc)Rounding Functions.
- * fscanf: (libc)Formatted Input Functions.
- * fseek: (libc)File Positioning.
- * fseeko64: (libc)File Positioning.
- * fseeko: (libc)File Positioning.
- * fsetpos64: (libc)Portable Positioning.
- * fsetpos: (libc)Portable Positioning.
- * fsqrt: (libc)Misc FP Arithmetic.
- * fsqrtl: (libc)Misc FP Arithmetic.
- * fstat64: (libc)Reading Attributes.
- * fstat: (libc)Reading Attributes.
- * fstatat64: (libc)Reading Attributes.
- * fstatat: (libc)Reading Attributes.
- * fsub: (libc)Misc FP Arithmetic.
- * fsubl: (libc)Misc FP Arithmetic.
- * fsync: (libc)Synchronizing I/O.
- * ftell: (libc)File Positioning.
- * ftello64: (libc)File Positioning.
- * ftello: (libc)File Positioning.
- * ftruncate64: (libc)File Size.
- * ftruncate: (libc)File Size.
- * ftrylockfile: (libc)Streams and Threads.
- * ftw64: (libc)Working with Directory Trees.
- * ftw: (libc)Working with Directory Trees.
- * funlockfile: (libc)Streams and Threads.
- * futimens: (libc)File Times.
- * futimes: (libc)File Times.
- * fwide: (libc)Streams and I18N.
- * fwprintf: (libc)Formatted Output Functions.
- * fwrite: (libc)Block Input/Output.
- * fwrite_unlocked: (libc)Block Input/Output.
- * fwscanf: (libc)Formatted Input Functions.
- * gamma: (libc)Special Functions.
- * gammaf: (libc)Special Functions.
- * gammal: (libc)Special Functions.
- * gcvt: (libc)System V Number Conversion.
- * get_avphys_pages: (libc)Query Memory Parameters.
- * get_current_dir_name: (libc)Working Directory.
- * get_nprocs: (libc)Processor Resources.
- * get_nprocs_conf: (libc)Processor Resources.
- * get_phys_pages: (libc)Query Memory Parameters.
- * getauxval: (libc)Auxiliary Vector.
- * getc: (libc)Character Input.
- * getc_unlocked: (libc)Character Input.
- * getchar: (libc)Character Input.
- * getchar_unlocked: (libc)Character Input.
- * getcontext: (libc)System V contexts.
- * getcpu: (libc)CPU Affinity.
- * getcwd: (libc)Working Directory.
- * getdate: (libc)General Time String Parsing.
- * getdate_r: (libc)General Time String Parsing.
- * getdelim: (libc)Line Input.
- * getdents64: (libc)Low-level Directory Access.
- * getdomainname: (libc)Host Identification.
- * getegid: (libc)Reading Persona.
- * getentropy: (libc)Unpredictable Bytes.
- * getenv: (libc)Environment Access.
- * geteuid: (libc)Reading Persona.
- * getfsent: (libc)fstab.
- * getfsfile: (libc)fstab.
- * getfsspec: (libc)fstab.
- * getgid: (libc)Reading Persona.
- * getgrent: (libc)Scanning All Groups.
- * getgrent_r: (libc)Scanning All Groups.
- * getgrgid: (libc)Lookup Group.
- * getgrgid_r: (libc)Lookup Group.
- * getgrnam: (libc)Lookup Group.
- * getgrnam_r: (libc)Lookup Group.
- * getgrouplist: (libc)Setting Groups.
- * getgroups: (libc)Reading Persona.
- * gethostbyaddr: (libc)Host Names.
- * gethostbyaddr_r: (libc)Host Names.
- * gethostbyname2: (libc)Host Names.
- * gethostbyname2_r: (libc)Host Names.
- * gethostbyname: (libc)Host Names.
- * gethostbyname_r: (libc)Host Names.
- * gethostent: (libc)Host Names.
- * gethostid: (libc)Host Identification.
- * gethostname: (libc)Host Identification.
- * getitimer: (libc)Setting an Alarm.
- * getline: (libc)Line Input.
- * getloadavg: (libc)Processor Resources.
- * getlogin: (libc)Who Logged In.
- * getmntent: (libc)mtab.
- * getmntent_r: (libc)mtab.
- * getnetbyaddr: (libc)Networks Database.
- * getnetbyname: (libc)Networks Database.
- * getnetent: (libc)Networks Database.
- * getnetgrent: (libc)Lookup Netgroup.
- * getnetgrent_r: (libc)Lookup Netgroup.
- * getopt: (libc)Using Getopt.
- * getopt_long: (libc)Getopt Long Options.
- * getopt_long_only: (libc)Getopt Long Options.
- * getpagesize: (libc)Query Memory Parameters.
- * getpass: (libc)getpass.
- * getpayload: (libc)FP Bit Twiddling.
- * getpayloadf: (libc)FP Bit Twiddling.
- * getpayloadfN: (libc)FP Bit Twiddling.
- * getpayloadfNx: (libc)FP Bit Twiddling.
- * getpayloadl: (libc)FP Bit Twiddling.
- * getpeername: (libc)Who is Connected.
- * getpgid: (libc)Process Group Functions.
- * getpgrp: (libc)Process Group Functions.
- * getpid: (libc)Process Identification.
- * getppid: (libc)Process Identification.
- * getpriority: (libc)Traditional Scheduling Functions.
- * getprotobyname: (libc)Protocols Database.
- * getprotobynumber: (libc)Protocols Database.
- * getprotoent: (libc)Protocols Database.
- * getpt: (libc)Allocation.
- * getpwent: (libc)Scanning All Users.
- * getpwent_r: (libc)Scanning All Users.
- * getpwnam: (libc)Lookup User.
- * getpwnam_r: (libc)Lookup User.
- * getpwuid: (libc)Lookup User.
- * getpwuid_r: (libc)Lookup User.
- * getrandom: (libc)Unpredictable Bytes.
- * getrlimit64: (libc)Limits on Resources.
- * getrlimit: (libc)Limits on Resources.
- * getrusage: (libc)Resource Usage.
- * gets: (libc)Line Input.
- * getservbyname: (libc)Services Database.
- * getservbyport: (libc)Services Database.
- * getservent: (libc)Services Database.
- * getsid: (libc)Process Group Functions.
- * getsockname: (libc)Reading Address.
- * getsockopt: (libc)Socket Option Functions.
- * getsubopt: (libc)Suboptions.
- * gettext: (libc)Translation with gettext.
- * gettid: (libc)Process Identification.
- * gettimeofday: (libc)Getting the Time.
- * getuid: (libc)Reading Persona.
- * getumask: (libc)Setting Permissions.
- * getutent: (libc)Manipulating the Database.
- * getutent_r: (libc)Manipulating the Database.
- * getutid: (libc)Manipulating the Database.
- * getutid_r: (libc)Manipulating the Database.
- * getutline: (libc)Manipulating the Database.
- * getutline_r: (libc)Manipulating the Database.
- * getutmp: (libc)XPG Functions.
- * getutmpx: (libc)XPG Functions.
- * getutxent: (libc)XPG Functions.
- * getutxid: (libc)XPG Functions.
- * getutxline: (libc)XPG Functions.
- * getw: (libc)Character Input.
- * getwc: (libc)Character Input.
- * getwc_unlocked: (libc)Character Input.
- * getwchar: (libc)Character Input.
- * getwchar_unlocked: (libc)Character Input.
- * getwd: (libc)Working Directory.
- * glob64: (libc)Calling Glob.
- * glob: (libc)Calling Glob.
- * globfree64: (libc)More Flags for Globbing.
- * globfree: (libc)More Flags for Globbing.
- * gmtime: (libc)Broken-down Time.
- * gmtime_r: (libc)Broken-down Time.
- * grantpt: (libc)Allocation.
- * gsignal: (libc)Signaling Yourself.
- * gtty: (libc)BSD Terminal Modes.
- * hasmntopt: (libc)mtab.
- * hcreate: (libc)Hash Search Function.
- * hcreate_r: (libc)Hash Search Function.
- * hdestroy: (libc)Hash Search Function.
- * hdestroy_r: (libc)Hash Search Function.
- * hsearch: (libc)Hash Search Function.
- * hsearch_r: (libc)Hash Search Function.
- * htonl: (libc)Byte Order.
- * htons: (libc)Byte Order.
- * hypot: (libc)Exponents and Logarithms.
- * hypotf: (libc)Exponents and Logarithms.
- * hypotfN: (libc)Exponents and Logarithms.
- * hypotfNx: (libc)Exponents and Logarithms.
- * hypotl: (libc)Exponents and Logarithms.
- * iconv: (libc)Generic Conversion Interface.
- * iconv_close: (libc)Generic Conversion Interface.
- * iconv_open: (libc)Generic Conversion Interface.
- * if_freenameindex: (libc)Interface Naming.
- * if_indextoname: (libc)Interface Naming.
- * if_nameindex: (libc)Interface Naming.
- * if_nametoindex: (libc)Interface Naming.
- * ilogb: (libc)Exponents and Logarithms.
- * ilogbf: (libc)Exponents and Logarithms.
- * ilogbfN: (libc)Exponents and Logarithms.
- * ilogbfNx: (libc)Exponents and Logarithms.
- * ilogbl: (libc)Exponents and Logarithms.
- * imaxabs: (libc)Absolute Value.
- * imaxdiv: (libc)Integer Division.
- * in6addr_any: (libc)Host Address Data Type.
- * in6addr_loopback: (libc)Host Address Data Type.
- * index: (libc)Search Functions.
- * inet_addr: (libc)Host Address Functions.
- * inet_aton: (libc)Host Address Functions.
- * inet_lnaof: (libc)Host Address Functions.
- * inet_makeaddr: (libc)Host Address Functions.
- * inet_netof: (libc)Host Address Functions.
- * inet_network: (libc)Host Address Functions.
- * inet_ntoa: (libc)Host Address Functions.
- * inet_ntop: (libc)Host Address Functions.
- * inet_pton: (libc)Host Address Functions.
- * initgroups: (libc)Setting Groups.
- * initstate: (libc)BSD Random.
- * initstate_r: (libc)BSD Random.
- * innetgr: (libc)Netgroup Membership.
- * ioctl: (libc)IOCTLs.
- * isalnum: (libc)Classification of Characters.
- * isalpha: (libc)Classification of Characters.
- * isascii: (libc)Classification of Characters.
- * isatty: (libc)Is It a Terminal.
- * isblank: (libc)Classification of Characters.
- * iscanonical: (libc)Floating Point Classes.
- * iscntrl: (libc)Classification of Characters.
- * isdigit: (libc)Classification of Characters.
- * iseqsig: (libc)FP Comparison Functions.
- * isfinite: (libc)Floating Point Classes.
- * isgraph: (libc)Classification of Characters.
- * isgreater: (libc)FP Comparison Functions.
- * isgreaterequal: (libc)FP Comparison Functions.
- * isinf: (libc)Floating Point Classes.
- * isinff: (libc)Floating Point Classes.
- * isinfl: (libc)Floating Point Classes.
- * isless: (libc)FP Comparison Functions.
- * islessequal: (libc)FP Comparison Functions.
- * islessgreater: (libc)FP Comparison Functions.
- * islower: (libc)Classification of Characters.
- * isnan: (libc)Floating Point Classes.
- * isnan: (libc)Floating Point Classes.
- * isnanf: (libc)Floating Point Classes.
- * isnanl: (libc)Floating Point Classes.
- * isnormal: (libc)Floating Point Classes.
- * isprint: (libc)Classification of Characters.
- * ispunct: (libc)Classification of Characters.
- * issignaling: (libc)Floating Point Classes.
- * isspace: (libc)Classification of Characters.
- * issubnormal: (libc)Floating Point Classes.
- * isunordered: (libc)FP Comparison Functions.
- * isupper: (libc)Classification of Characters.
- * iswalnum: (libc)Classification of Wide Characters.
- * iswalpha: (libc)Classification of Wide Characters.
- * iswblank: (libc)Classification of Wide Characters.
- * iswcntrl: (libc)Classification of Wide Characters.
- * iswctype: (libc)Classification of Wide Characters.
- * iswdigit: (libc)Classification of Wide Characters.
- * iswgraph: (libc)Classification of Wide Characters.
- * iswlower: (libc)Classification of Wide Characters.
- * iswprint: (libc)Classification of Wide Characters.
- * iswpunct: (libc)Classification of Wide Characters.
- * iswspace: (libc)Classification of Wide Characters.
- * iswupper: (libc)Classification of Wide Characters.
- * iswxdigit: (libc)Classification of Wide Characters.
- * isxdigit: (libc)Classification of Characters.
- * iszero: (libc)Floating Point Classes.
- * j0: (libc)Special Functions.
- * j0f: (libc)Special Functions.
- * j0fN: (libc)Special Functions.
- * j0fNx: (libc)Special Functions.
- * j0l: (libc)Special Functions.
- * j1: (libc)Special Functions.
- * j1f: (libc)Special Functions.
- * j1fN: (libc)Special Functions.
- * j1fNx: (libc)Special Functions.
- * j1l: (libc)Special Functions.
- * jn: (libc)Special Functions.
- * jnf: (libc)Special Functions.
- * jnfN: (libc)Special Functions.
- * jnfNx: (libc)Special Functions.
- * jnl: (libc)Special Functions.
- * jrand48: (libc)SVID Random.
- * jrand48_r: (libc)SVID Random.
- * kill: (libc)Signaling Another Process.
- * killpg: (libc)Signaling Another Process.
- * l64a: (libc)Encode Binary Data.
- * labs: (libc)Absolute Value.
- * lcong48: (libc)SVID Random.
- * lcong48_r: (libc)SVID Random.
- * ldexp: (libc)Normalization Functions.
- * ldexpf: (libc)Normalization Functions.
- * ldexpfN: (libc)Normalization Functions.
- * ldexpfNx: (libc)Normalization Functions.
- * ldexpl: (libc)Normalization Functions.
- * ldiv: (libc)Integer Division.
- * lfind: (libc)Array Search Function.
- * lgamma: (libc)Special Functions.
- * lgamma_r: (libc)Special Functions.
- * lgammaf: (libc)Special Functions.
- * lgammafN: (libc)Special Functions.
- * lgammafN_r: (libc)Special Functions.
- * lgammafNx: (libc)Special Functions.
- * lgammafNx_r: (libc)Special Functions.
- * lgammaf_r: (libc)Special Functions.
- * lgammal: (libc)Special Functions.
- * lgammal_r: (libc)Special Functions.
- * link: (libc)Hard Links.
- * linkat: (libc)Hard Links.
- * lio_listio64: (libc)Asynchronous Reads/Writes.
- * lio_listio: (libc)Asynchronous Reads/Writes.
- * listen: (libc)Listening.
- * llabs: (libc)Absolute Value.
- * lldiv: (libc)Integer Division.
- * llogb: (libc)Exponents and Logarithms.
- * llogbf: (libc)Exponents and Logarithms.
- * llogbfN: (libc)Exponents and Logarithms.
- * llogbfNx: (libc)Exponents and Logarithms.
- * llogbl: (libc)Exponents and Logarithms.
- * llrint: (libc)Rounding Functions.
- * llrintf: (libc)Rounding Functions.
- * llrintfN: (libc)Rounding Functions.
- * llrintfNx: (libc)Rounding Functions.
- * llrintl: (libc)Rounding Functions.
- * llround: (libc)Rounding Functions.
- * llroundf: (libc)Rounding Functions.
- * llroundfN: (libc)Rounding Functions.
- * llroundfNx: (libc)Rounding Functions.
- * llroundl: (libc)Rounding Functions.
- * localeconv: (libc)The Lame Way to Locale Data.
- * localtime: (libc)Broken-down Time.
- * localtime_r: (libc)Broken-down Time.
- * log10: (libc)Exponents and Logarithms.
- * log10f: (libc)Exponents and Logarithms.
- * log10fN: (libc)Exponents and Logarithms.
- * log10fNx: (libc)Exponents and Logarithms.
- * log10l: (libc)Exponents and Logarithms.
- * log10p1: (libc)Exponents and Logarithms.
- * log10p1f: (libc)Exponents and Logarithms.
- * log10p1fN: (libc)Exponents and Logarithms.
- * log10p1fNx: (libc)Exponents and Logarithms.
- * log10p1l: (libc)Exponents and Logarithms.
- * log1p: (libc)Exponents and Logarithms.
- * log1pf: (libc)Exponents and Logarithms.
- * log1pfN: (libc)Exponents and Logarithms.
- * log1pfNx: (libc)Exponents and Logarithms.
- * log1pl: (libc)Exponents and Logarithms.
- * log2: (libc)Exponents and Logarithms.
- * log2f: (libc)Exponents and Logarithms.
- * log2fN: (libc)Exponents and Logarithms.
- * log2fNx: (libc)Exponents and Logarithms.
- * log2l: (libc)Exponents and Logarithms.
- * log2p1: (libc)Exponents and Logarithms.
- * log2p1f: (libc)Exponents and Logarithms.
- * log2p1fN: (libc)Exponents and Logarithms.
- * log2p1fNx: (libc)Exponents and Logarithms.
- * log2p1l: (libc)Exponents and Logarithms.
- * log: (libc)Exponents and Logarithms.
- * logb: (libc)Exponents and Logarithms.
- * logbf: (libc)Exponents and Logarithms.
- * logbfN: (libc)Exponents and Logarithms.
- * logbfNx: (libc)Exponents and Logarithms.
- * logbl: (libc)Exponents and Logarithms.
- * logf: (libc)Exponents and Logarithms.
- * logfN: (libc)Exponents and Logarithms.
- * logfNx: (libc)Exponents and Logarithms.
- * login: (libc)Logging In and Out.
- * login_tty: (libc)Logging In and Out.
- * logl: (libc)Exponents and Logarithms.
- * logout: (libc)Logging In and Out.
- * logp1: (libc)Exponents and Logarithms.
- * logp1f: (libc)Exponents and Logarithms.
- * logp1fN: (libc)Exponents and Logarithms.
- * logp1fNx: (libc)Exponents and Logarithms.
- * logp1l: (libc)Exponents and Logarithms.
- * logwtmp: (libc)Logging In and Out.
- * longjmp: (libc)Non-Local Details.
- * lrand48: (libc)SVID Random.
- * lrand48_r: (libc)SVID Random.
- * lrint: (libc)Rounding Functions.
- * lrintf: (libc)Rounding Functions.
- * lrintfN: (libc)Rounding Functions.
- * lrintfNx: (libc)Rounding Functions.
- * lrintl: (libc)Rounding Functions.
- * lround: (libc)Rounding Functions.
- * lroundf: (libc)Rounding Functions.
- * lroundfN: (libc)Rounding Functions.
- * lroundfNx: (libc)Rounding Functions.
- * lroundl: (libc)Rounding Functions.
- * lsearch: (libc)Array Search Function.
- * lseek64: (libc)File Position Primitive.
- * lseek: (libc)File Position Primitive.
- * lstat64: (libc)Reading Attributes.
- * lstat: (libc)Reading Attributes.
- * lutimes: (libc)File Times.
- * madvise: (libc)Memory-mapped I/O.
- * makecontext: (libc)System V contexts.
- * mallinfo2: (libc)Statistics of Malloc.
- * malloc: (libc)Basic Allocation.
- * mallopt: (libc)Malloc Tunable Parameters.
- * mblen: (libc)Non-reentrant Character Conversion.
- * mbrlen: (libc)Converting a Character.
- * mbrtowc: (libc)Converting a Character.
- * mbsinit: (libc)Keeping the state.
- * mbsnrtowcs: (libc)Converting Strings.
- * mbsrtowcs: (libc)Converting Strings.
- * mbstowcs: (libc)Non-reentrant String Conversion.
- * mbtowc: (libc)Non-reentrant Character Conversion.
- * mcheck: (libc)Heap Consistency Checking.
- * memalign: (libc)Aligned Memory Blocks.
- * memalignment: (libc)Aligned Memory Blocks.
- * memccpy: (libc)Copying Strings and Arrays.
- * memchr: (libc)Search Functions.
- * memcmp: (libc)String/Array Comparison.
- * memcpy: (libc)Copying Strings and Arrays.
- * memfd_create: (libc)Memory-mapped I/O.
- * memfrob: (libc)Obfuscating Data.
- * memmem: (libc)Search Functions.
- * memmove: (libc)Copying Strings and Arrays.
- * mempcpy: (libc)Copying Strings and Arrays.
- * memrchr: (libc)Search Functions.
- * memset: (libc)Copying Strings and Arrays.
- * memset_explicit: (libc)Erasing Sensitive Data.
- * mkdir: (libc)Creating Directories.
- * mkdirat: (libc)Creating Directories.
- * mkdtemp: (libc)Temporary Files.
- * mkfifo: (libc)FIFO Special Files.
- * mknod: (libc)Making Special Files.
- * mkstemp: (libc)Temporary Files.
- * mktemp: (libc)Temporary Files.
- * mktime: (libc)Broken-down Time.
- * mlock2: (libc)Page Lock Functions.
- * mlock: (libc)Page Lock Functions.
- * mlockall: (libc)Page Lock Functions.
- * mmap64: (libc)Memory-mapped I/O.
- * mmap: (libc)Memory-mapped I/O.
- * modf: (libc)Rounding Functions.
- * modff: (libc)Rounding Functions.
- * modffN: (libc)Rounding Functions.
- * modffNx: (libc)Rounding Functions.
- * modfl: (libc)Rounding Functions.
- * mount: (libc)Mount-Unmount-Remount.
- * mprobe: (libc)Heap Consistency Checking.
- * mprotect: (libc)Memory Protection.
- * mrand48: (libc)SVID Random.
- * mrand48_r: (libc)SVID Random.
- * mremap: (libc)Memory-mapped I/O.
- * mseal: (libc)Memory Protection.
- * msync: (libc)Memory-mapped I/O.
- * mtrace: (libc)Tracing malloc.
- * mtx_destroy: (libc)ISO C Mutexes.
- * mtx_init: (libc)ISO C Mutexes.
- * mtx_lock: (libc)ISO C Mutexes.
- * mtx_timedlock: (libc)ISO C Mutexes.
- * mtx_trylock: (libc)ISO C Mutexes.
- * mtx_unlock: (libc)ISO C Mutexes.
- * munlock: (libc)Page Lock Functions.
- * munlockall: (libc)Page Lock Functions.
- * munmap: (libc)Memory-mapped I/O.
- * muntrace: (libc)Tracing malloc.
- * nan: (libc)FP Bit Twiddling.
- * nanf: (libc)FP Bit Twiddling.
- * nanfN: (libc)FP Bit Twiddling.
- * nanfNx: (libc)FP Bit Twiddling.
- * nanl: (libc)FP Bit Twiddling.
- * nanosleep: (libc)Sleeping.
- * nearbyint: (libc)Rounding Functions.
- * nearbyintf: (libc)Rounding Functions.
- * nearbyintfN: (libc)Rounding Functions.
- * nearbyintfNx: (libc)Rounding Functions.
- * nearbyintl: (libc)Rounding Functions.
- * nextafter: (libc)FP Bit Twiddling.
- * nextafterf: (libc)FP Bit Twiddling.
- * nextafterfN: (libc)FP Bit Twiddling.
- * nextafterfNx: (libc)FP Bit Twiddling.
- * nextafterl: (libc)FP Bit Twiddling.
- * nextdown: (libc)FP Bit Twiddling.
- * nextdownf: (libc)FP Bit Twiddling.
- * nextdownfN: (libc)FP Bit Twiddling.
- * nextdownfNx: (libc)FP Bit Twiddling.
- * nextdownl: (libc)FP Bit Twiddling.
- * nexttoward: (libc)FP Bit Twiddling.
- * nexttowardf: (libc)FP Bit Twiddling.
- * nexttowardl: (libc)FP Bit Twiddling.
- * nextup: (libc)FP Bit Twiddling.
- * nextupf: (libc)FP Bit Twiddling.
- * nextupfN: (libc)FP Bit Twiddling.
- * nextupfNx: (libc)FP Bit Twiddling.
- * nextupl: (libc)FP Bit Twiddling.
- * nftw64: (libc)Working with Directory Trees.
- * nftw: (libc)Working with Directory Trees.
- * ngettext: (libc)Advanced gettext functions.
- * nice: (libc)Traditional Scheduling Functions.
- * nl_langinfo: (libc)The Elegant and Fast Way.
- * nrand48: (libc)SVID Random.
- * nrand48_r: (libc)SVID Random.
- * ntohl: (libc)Byte Order.
- * ntohs: (libc)Byte Order.
- * ntp_adjtime: (libc)Setting and Adjusting the Time.
- * ntp_gettime: (libc)Setting and Adjusting the Time.
- * obstack_1grow: (libc)Growing Objects.
- * obstack_1grow_fast: (libc)Extra Fast Growing.
- * obstack_alignment_mask: (libc)Obstacks Data Alignment.
- * obstack_alloc: (libc)Allocation in an Obstack.
- * obstack_base: (libc)Status of an Obstack.
- * obstack_blank: (libc)Growing Objects.
- * obstack_blank_fast: (libc)Extra Fast Growing.
- * obstack_chunk_size: (libc)Obstack Chunks.
- * obstack_copy0: (libc)Allocation in an Obstack.
- * obstack_copy: (libc)Allocation in an Obstack.
- * obstack_finish: (libc)Growing Objects.
- * obstack_free: (libc)Freeing Obstack Objects.
- * obstack_grow0: (libc)Growing Objects.
- * obstack_grow: (libc)Growing Objects.
- * obstack_init: (libc)Preparing for Obstacks.
- * obstack_int_grow: (libc)Growing Objects.
- * obstack_int_grow_fast: (libc)Extra Fast Growing.
- * obstack_next_free: (libc)Status of an Obstack.
- * obstack_object_size: (libc)Growing Objects.
- * obstack_object_size: (libc)Status of an Obstack.
- * obstack_printf: (libc)Dynamic Output.
- * obstack_ptr_grow: (libc)Growing Objects.
- * obstack_ptr_grow_fast: (libc)Extra Fast Growing.
- * obstack_room: (libc)Extra Fast Growing.
- * obstack_vprintf: (libc)Variable Arguments Output.
- * offsetof: (libc)Structure Measurement.
- * on_exit: (libc)Cleanups on Exit.
- * open64: (libc)Opening and Closing Files.
- * open: (libc)Opening and Closing Files.
- * open_memstream: (libc)String Streams.
- * openat2: (libc)Opening and Closing Files.
- * openat64: (libc)Opening and Closing Files.
- * openat: (libc)Opening and Closing Files.
- * opendir: (libc)Opening a Directory.
- * openlog: (libc)openlog.
- * openpty: (libc)Pseudo-Terminal Pairs.
- * parse_printf_format: (libc)Parsing a Template String.
- * pathconf: (libc)Pathconf.
- * pause: (libc)Using Pause.
- * pclose: (libc)Pipe to a Subprocess.
- * perror: (libc)Error Messages.
- * pidfd_getpid: (libc)Querying a Process.
- * pipe: (libc)Creating a Pipe.
- * pkey_alloc: (libc)Memory Protection.
- * pkey_free: (libc)Memory Protection.
- * pkey_get: (libc)Memory Protection.
- * pkey_mprotect: (libc)Memory Protection.
- * pkey_set: (libc)Memory Protection.
- * poll: (libc)Other Low-Level I/O APIs.
- * popen: (libc)Pipe to a Subprocess.
- * posix_fallocate64: (libc)Storage Allocation.
- * posix_fallocate: (libc)Storage Allocation.
- * posix_memalign: (libc)Aligned Memory Blocks.
- * posix_openpt: (libc)Allocation.
- * pow: (libc)Exponents and Logarithms.
- * powf: (libc)Exponents and Logarithms.
- * powfN: (libc)Exponents and Logarithms.
- * powfNx: (libc)Exponents and Logarithms.
- * powl: (libc)Exponents and Logarithms.
- * pown: (libc)Exponents and Logarithms.
- * pownf: (libc)Exponents and Logarithms.
- * pownfN: (libc)Exponents and Logarithms.
- * pownfNx: (libc)Exponents and Logarithms.
- * pownl: (libc)Exponents and Logarithms.
- * powr: (libc)Exponents and Logarithms.
- * powrf: (libc)Exponents and Logarithms.
- * powrfN: (libc)Exponents and Logarithms.
- * powrfNx: (libc)Exponents and Logarithms.
- * powrl: (libc)Exponents and Logarithms.
- * pread64: (libc)I/O Primitives.
- * pread: (libc)I/O Primitives.
- * preadv2: (libc)Scatter-Gather.
- * preadv64: (libc)Scatter-Gather.
- * preadv64v2: (libc)Scatter-Gather.
- * preadv: (libc)Scatter-Gather.
- * printf: (libc)Formatted Output Functions.
- * printf_size: (libc)Predefined Printf Handlers.
- * printf_size_info: (libc)Predefined Printf Handlers.
- * psignal: (libc)Signal Messages.
- * pthread_attr_destroy: (libc)Creating and Destroying Threads.
- * pthread_attr_getaffinity_np: (libc)Thread CPU Affinity.
- * pthread_attr_getdetachstate: (libc)Creating and Destroying Threads.
- * pthread_attr_getsigmask_np: (libc)Initial Thread Signal Mask.
- * pthread_attr_init: (libc)Creating and Destroying Threads.
- * pthread_attr_setaffinity_np: (libc)Thread CPU Affinity.
- * pthread_attr_setdetachstate: (libc)Creating and Destroying Threads.
- * pthread_attr_setsigmask_np: (libc)Initial Thread Signal Mask.
- * pthread_barrier_destroy: (libc)POSIX Barriers.
- * pthread_barrier_init: (libc)POSIX Barriers.
- * pthread_barrier_wait: (libc)POSIX Barriers.
- * pthread_clockjoin_np: (libc)Joining Threads.
- * pthread_cond_clockwait: (libc)Waiting with Explicit Clocks.
- * pthread_create: (libc)Creating and Destroying Threads.
- * pthread_detach: (libc)Creating and Destroying Threads.
- * pthread_equal: (libc)POSIX Threads Other APIs.
- * pthread_getaffinity_np: (libc)Thread CPU Affinity.
- * pthread_getattr_default_np: (libc)Default Thread Attributes.
- * pthread_getcpuclockid: (libc)POSIX Threads Other APIs.
- * pthread_getname_np: (libc)Thread Names.
- * pthread_getspecific: (libc)Thread-specific Data.
- * pthread_gettid_np: (libc)Process Identification.
- * pthread_join: (libc)Creating and Destroying Threads.
- * pthread_key_create: (libc)Thread-specific Data.
- * pthread_key_delete: (libc)Thread-specific Data.
- * pthread_kill: (libc)Creating and Destroying Threads.
- * pthread_mutex_clocklock: (libc)POSIX Mutexes.
- * pthread_mutex_destroy: (libc)POSIX Mutexes.
- * pthread_mutex_init: (libc)POSIX Mutexes.
- * pthread_mutex_lock: (libc)POSIX Mutexes.
- * pthread_mutex_timedlock: (libc)POSIX Mutexes.
- * pthread_mutex_trylock: (libc)POSIX Mutexes.
- * pthread_mutex_unlock: (libc)POSIX Mutexes.
- * pthread_mutexattr_destroy: (libc)POSIX Mutexes.
- * pthread_mutexattr_gettype: (libc)POSIX Mutexes.
- * pthread_mutexattr_init: (libc)POSIX Mutexes.
- * pthread_mutexattr_settype: (libc)POSIX Mutexes.
- * pthread_once: (libc)POSIX Threads Other APIs.
- * pthread_rwlock_clockrdlock: (libc)Waiting with Explicit Clocks.
- * pthread_rwlock_clockwrlock: (libc)Waiting with Explicit Clocks.
- * pthread_self: (libc)Creating and Destroying Threads.
- * pthread_setaffinity_np: (libc)Thread CPU Affinity.
- * pthread_setattr_default_np: (libc)Default Thread Attributes.
- * pthread_setname_np: (libc)Thread Names.
- * pthread_setspecific: (libc)Thread-specific Data.
- * pthread_sigmask: (libc)POSIX Threads Other APIs.
- * pthread_spin_destroy: (libc)POSIX Spin Locks.
- * pthread_spin_init: (libc)POSIX Spin Locks.
- * pthread_spin_lock: (libc)POSIX Spin Locks.
- * pthread_spin_trylock: (libc)POSIX Spin Locks.
- * pthread_spin_unlock: (libc)POSIX Spin Locks.
- * pthread_timedjoin_np: (libc)Joining Threads.
- * pthread_tryjoin_np: (libc)Joining Threads.
- * ptsname: (libc)Allocation.
- * ptsname_r: (libc)Allocation.
- * putc: (libc)Simple Output.
- * putc_unlocked: (libc)Simple Output.
- * putchar: (libc)Simple Output.
- * putchar_unlocked: (libc)Simple Output.
- * putenv: (libc)Environment Access.
- * putpwent: (libc)Writing a User Entry.
- * puts: (libc)Simple Output.
- * pututline: (libc)Manipulating the Database.
- * pututxline: (libc)XPG Functions.
- * putw: (libc)Simple Output.
- * putwc: (libc)Simple Output.
- * putwc_unlocked: (libc)Simple Output.
- * putwchar: (libc)Simple Output.
- * putwchar_unlocked: (libc)Simple Output.
- * pwrite64: (libc)I/O Primitives.
- * pwrite: (libc)I/O Primitives.
- * pwritev2: (libc)Scatter-Gather.
- * pwritev64: (libc)Scatter-Gather.
- * pwritev64v2: (libc)Scatter-Gather.
- * pwritev: (libc)Scatter-Gather.
- * qecvt: (libc)System V Number Conversion.
- * qecvt_r: (libc)System V Number Conversion.
- * qfcvt: (libc)System V Number Conversion.
- * qfcvt_r: (libc)System V Number Conversion.
- * qgcvt: (libc)System V Number Conversion.
- * qsort: (libc)Array Sort Function.
- * raise: (libc)Signaling Yourself.
- * rand: (libc)ISO Random.
- * rand_r: (libc)ISO Random.
- * random: (libc)BSD Random.
- * random_r: (libc)BSD Random.
- * rawmemchr: (libc)Search Functions.
- * read: (libc)I/O Primitives.
- * readdir64: (libc)Reading/Closing Directory.
- * readdir64_r: (libc)Reading/Closing Directory.
- * readdir: (libc)Reading/Closing Directory.
- * readdir_r: (libc)Reading/Closing Directory.
- * readlink: (libc)Symbolic Links.
- * readv: (libc)Scatter-Gather.
- * realloc: (libc)Changing Block Size.
- * reallocarray: (libc)Changing Block Size.
- * realpath: (libc)Symbolic Links.
- * recv: (libc)Receiving Data.
- * recvfrom: (libc)Receiving Datagrams.
- * recvmsg: (libc)Other Socket APIs.
- * regcomp: (libc)POSIX Regexp Compilation.
- * regerror: (libc)Regexp Cleanup.
- * regexec: (libc)Matching POSIX Regexps.
- * regfree: (libc)Regexp Cleanup.
- * register_printf_function: (libc)Registering New Conversions.
- * remainder: (libc)Remainder Functions.
- * remainderf: (libc)Remainder Functions.
- * remainderfN: (libc)Remainder Functions.
- * remainderfNx: (libc)Remainder Functions.
- * remainderl: (libc)Remainder Functions.
- * remove: (libc)Deleting Files.
- * rename: (libc)Renaming Files.
- * renameat: (libc)Renaming Files.
- * rewind: (libc)File Positioning.
- * rewinddir: (libc)Random Access Directory.
- * rindex: (libc)Search Functions.
- * rint: (libc)Rounding Functions.
- * rintf: (libc)Rounding Functions.
- * rintfN: (libc)Rounding Functions.
- * rintfNx: (libc)Rounding Functions.
- * rintl: (libc)Rounding Functions.
- * rmdir: (libc)Deleting Files.
- * rootn: (libc)Exponents and Logarithms.
- * rootnf: (libc)Exponents and Logarithms.
- * rootnfN: (libc)Exponents and Logarithms.
- * rootnfNx: (libc)Exponents and Logarithms.
- * rootnl: (libc)Exponents and Logarithms.
- * round: (libc)Rounding Functions.
- * roundeven: (libc)Rounding Functions.
- * roundevenf: (libc)Rounding Functions.
- * roundevenfN: (libc)Rounding Functions.
- * roundevenfNx: (libc)Rounding Functions.
- * roundevenl: (libc)Rounding Functions.
- * roundf: (libc)Rounding Functions.
- * roundfN: (libc)Rounding Functions.
- * roundfNx: (libc)Rounding Functions.
- * roundl: (libc)Rounding Functions.
- * rpmatch: (libc)Yes-or-No Questions.
- * rsqrt: (libc)Exponents and Logarithms.
- * rsqrtf: (libc)Exponents and Logarithms.
- * rsqrtfN: (libc)Exponents and Logarithms.
- * rsqrtfNx: (libc)Exponents and Logarithms.
- * rsqrtl: (libc)Exponents and Logarithms.
- * sbrk: (libc)Resizing the Data Segment.
- * scalb: (libc)Normalization Functions.
- * scalbf: (libc)Normalization Functions.
- * scalbl: (libc)Normalization Functions.
- * scalbln: (libc)Normalization Functions.
- * scalblnf: (libc)Normalization Functions.
- * scalblnfN: (libc)Normalization Functions.
- * scalblnfNx: (libc)Normalization Functions.
- * scalblnl: (libc)Normalization Functions.
- * scalbn: (libc)Normalization Functions.
- * scalbnf: (libc)Normalization Functions.
- * scalbnfN: (libc)Normalization Functions.
- * scalbnfNx: (libc)Normalization Functions.
- * scalbnl: (libc)Normalization Functions.
- * scandir64: (libc)Scanning Directory Content.
- * scandir: (libc)Scanning Directory Content.
- * scanf: (libc)Formatted Input Functions.
- * sched_get_priority_max: (libc)Basic Scheduling Functions.
- * sched_get_priority_min: (libc)Basic Scheduling Functions.
- * sched_getaffinity: (libc)CPU Affinity.
- * sched_getattr: (libc)Extensible Scheduling.
- * sched_getcpu: (libc)CPU Affinity.
- * sched_getparam: (libc)Basic Scheduling Functions.
- * sched_getscheduler: (libc)Basic Scheduling Functions.
- * sched_rr_get_interval: (libc)Basic Scheduling Functions.
- * sched_setaffinity: (libc)CPU Affinity.
- * sched_setattr: (libc)Extensible Scheduling.
- * sched_setparam: (libc)Basic Scheduling Functions.
- * sched_setscheduler: (libc)Basic Scheduling Functions.
- * sched_yield: (libc)Basic Scheduling Functions.
- * secure_getenv: (libc)Environment Access.
- * seed48: (libc)SVID Random.
- * seed48_r: (libc)SVID Random.
- * seekdir: (libc)Random Access Directory.
- * select: (libc)Waiting for I/O.
- * sem_clockwait: (libc)POSIX Semaphores.
- * sem_close: (libc)POSIX Semaphores.
- * sem_destroy: (libc)POSIX Semaphores.
- * sem_getvalue: (libc)POSIX Semaphores.
- * sem_init: (libc)POSIX Semaphores.
- * sem_open: (libc)POSIX Semaphores.
- * sem_post: (libc)POSIX Semaphores.
- * sem_timedwait: (libc)POSIX Semaphores.
- * sem_trywait: (libc)POSIX Semaphores.
- * sem_unlink: (libc)POSIX Semaphores.
- * sem_wait: (libc)POSIX Semaphores.
- * semctl: (libc)Semaphores.
- * semget: (libc)Semaphores.
- * semop: (libc)Semaphores.
- * semtimedop: (libc)Semaphores.
- * send: (libc)Sending Data.
- * sendmsg: (libc)Other Socket APIs.
- * sendto: (libc)Sending Datagrams.
- * setbuf: (libc)Controlling Buffering.
- * setbuffer: (libc)Controlling Buffering.
- * setcontext: (libc)System V contexts.
- * setdomainname: (libc)Host Identification.
- * setegid: (libc)Setting Groups.
- * setenv: (libc)Environment Access.
- * seteuid: (libc)Setting User ID.
- * setfsent: (libc)fstab.
- * setgid: (libc)Setting Groups.
- * setgrent: (libc)Scanning All Groups.
- * setgroups: (libc)Setting Groups.
- * sethostent: (libc)Host Names.
- * sethostid: (libc)Host Identification.
- * sethostname: (libc)Host Identification.
- * setitimer: (libc)Setting an Alarm.
- * setjmp: (libc)Non-Local Details.
- * setlinebuf: (libc)Controlling Buffering.
- * setlocale: (libc)Setting the Locale.
- * setlogmask: (libc)setlogmask.
- * setmntent: (libc)mtab.
- * setnetent: (libc)Networks Database.
- * setnetgrent: (libc)Lookup Netgroup.
- * setpayload: (libc)FP Bit Twiddling.
- * setpayloadf: (libc)FP Bit Twiddling.
- * setpayloadfN: (libc)FP Bit Twiddling.
- * setpayloadfNx: (libc)FP Bit Twiddling.
- * setpayloadl: (libc)FP Bit Twiddling.
- * setpayloadsig: (libc)FP Bit Twiddling.
- * setpayloadsigf: (libc)FP Bit Twiddling.
- * setpayloadsigfN: (libc)FP Bit Twiddling.
- * setpayloadsigfNx: (libc)FP Bit Twiddling.
- * setpayloadsigl: (libc)FP Bit Twiddling.
- * setpgid: (libc)Process Group Functions.
- * setpgrp: (libc)Process Group Functions.
- * setpriority: (libc)Traditional Scheduling Functions.
- * setprotoent: (libc)Protocols Database.
- * setpwent: (libc)Scanning All Users.
- * setregid: (libc)Setting Groups.
- * setreuid: (libc)Setting User ID.
- * setrlimit64: (libc)Limits on Resources.
- * setrlimit: (libc)Limits on Resources.
- * setservent: (libc)Services Database.
- * setsid: (libc)Process Group Functions.
- * setsockopt: (libc)Socket Option Functions.
- * setstate: (libc)BSD Random.
- * setstate_r: (libc)BSD Random.
- * settimeofday: (libc)Setting and Adjusting the Time.
- * setuid: (libc)Setting User ID.
- * setutent: (libc)Manipulating the Database.
- * setutxent: (libc)XPG Functions.
- * setvbuf: (libc)Controlling Buffering.
- * shm_open: (libc)Memory-mapped I/O.
- * shm_unlink: (libc)Memory-mapped I/O.
- * shutdown: (libc)Closing a Socket.
- * sigabbrev_np: (libc)Signal Messages.
- * sigaction: (libc)Advanced Signal Handling.
- * sigaddset: (libc)Signal Sets.
- * sigaltstack: (libc)Signal Stack.
- * sigblock: (libc)BSD Signal Handling.
- * sigdelset: (libc)Signal Sets.
- * sigdescr_np: (libc)Signal Messages.
- * sigemptyset: (libc)Signal Sets.
- * sigfillset: (libc)Signal Sets.
- * siginterrupt: (libc)BSD Signal Handling.
- * sigismember: (libc)Signal Sets.
- * siglongjmp: (libc)Non-Local Exits and Signals.
- * sigmask: (libc)BSD Signal Handling.
- * signal: (libc)Basic Signal Handling.
- * signbit: (libc)FP Bit Twiddling.
- * significand: (libc)Normalization Functions.
- * significandf: (libc)Normalization Functions.
- * significandl: (libc)Normalization Functions.
- * sigpause: (libc)BSD Signal Handling.
- * sigpending: (libc)Checking for Pending Signals.
- * sigprocmask: (libc)Process Signal Mask.
- * sigsetjmp: (libc)Non-Local Exits and Signals.
- * sigsetmask: (libc)BSD Signal Handling.
- * sigstack: (libc)Signal Stack.
- * sigsuspend: (libc)Sigsuspend.
- * sin: (libc)Trig Functions.
- * sincos: (libc)Trig Functions.
- * sincosf: (libc)Trig Functions.
- * sincosfN: (libc)Trig Functions.
- * sincosfNx: (libc)Trig Functions.
- * sincosl: (libc)Trig Functions.
- * sinf: (libc)Trig Functions.
- * sinfN: (libc)Trig Functions.
- * sinfNx: (libc)Trig Functions.
- * sinh: (libc)Hyperbolic Functions.
- * sinhf: (libc)Hyperbolic Functions.
- * sinhfN: (libc)Hyperbolic Functions.
- * sinhfNx: (libc)Hyperbolic Functions.
- * sinhl: (libc)Hyperbolic Functions.
- * sinl: (libc)Trig Functions.
- * sinpi: (libc)Trig Functions.
- * sinpif: (libc)Trig Functions.
- * sinpifN: (libc)Trig Functions.
- * sinpifNx: (libc)Trig Functions.
- * sinpil: (libc)Trig Functions.
- * sleep: (libc)Sleeping.
- * snprintf: (libc)Formatted Output Functions.
- * socket: (libc)Creating a Socket.
- * socketpair: (libc)Socket Pairs.
- * sprintf: (libc)Formatted Output Functions.
- * sqrt: (libc)Exponents and Logarithms.
- * sqrtf: (libc)Exponents and Logarithms.
- * sqrtfN: (libc)Exponents and Logarithms.
- * sqrtfNx: (libc)Exponents and Logarithms.
- * sqrtl: (libc)Exponents and Logarithms.
- * srand48: (libc)SVID Random.
- * srand48_r: (libc)SVID Random.
- * srand: (libc)ISO Random.
- * srandom: (libc)BSD Random.
- * srandom_r: (libc)BSD Random.
- * sscanf: (libc)Formatted Input Functions.
- * ssignal: (libc)Basic Signal Handling.
- * stat64: (libc)Reading Attributes.
- * stat: (libc)Reading Attributes.
- * stdc_bit_ceil_uc: (libc)Bit Manipulation.
- * stdc_bit_ceil_ui: (libc)Bit Manipulation.
- * stdc_bit_ceil_ul: (libc)Bit Manipulation.
- * stdc_bit_ceil_ull: (libc)Bit Manipulation.
- * stdc_bit_ceil_us: (libc)Bit Manipulation.
- * stdc_bit_floor_uc: (libc)Bit Manipulation.
- * stdc_bit_floor_ui: (libc)Bit Manipulation.
- * stdc_bit_floor_ul: (libc)Bit Manipulation.
- * stdc_bit_floor_ull: (libc)Bit Manipulation.
- * stdc_bit_floor_us: (libc)Bit Manipulation.
- * stdc_bit_width_uc: (libc)Bit Manipulation.
- * stdc_bit_width_ui: (libc)Bit Manipulation.
- * stdc_bit_width_ul: (libc)Bit Manipulation.
- * stdc_bit_width_ull: (libc)Bit Manipulation.
- * stdc_bit_width_us: (libc)Bit Manipulation.
- * stdc_count_ones_uc: (libc)Bit Manipulation.
- * stdc_count_ones_ui: (libc)Bit Manipulation.
- * stdc_count_ones_ul: (libc)Bit Manipulation.
- * stdc_count_ones_ull: (libc)Bit Manipulation.
- * stdc_count_ones_us: (libc)Bit Manipulation.
- * stdc_count_zeros_uc: (libc)Bit Manipulation.
- * stdc_count_zeros_ui: (libc)Bit Manipulation.
- * stdc_count_zeros_ul: (libc)Bit Manipulation.
- * stdc_count_zeros_ull: (libc)Bit Manipulation.
- * stdc_count_zeros_us: (libc)Bit Manipulation.
- * stdc_first_leading_one_uc: (libc)Bit Manipulation.
- * stdc_first_leading_one_ui: (libc)Bit Manipulation.
- * stdc_first_leading_one_ul: (libc)Bit Manipulation.
- * stdc_first_leading_one_ull: (libc)Bit Manipulation.
- * stdc_first_leading_one_us: (libc)Bit Manipulation.
- * stdc_first_leading_zero_uc: (libc)Bit Manipulation.
- * stdc_first_leading_zero_ui: (libc)Bit Manipulation.
- * stdc_first_leading_zero_ul: (libc)Bit Manipulation.
- * stdc_first_leading_zero_ull: (libc)Bit Manipulation.
- * stdc_first_leading_zero_us: (libc)Bit Manipulation.
- * stdc_first_trailing_one_uc: (libc)Bit Manipulation.
- * stdc_first_trailing_one_ui: (libc)Bit Manipulation.
- * stdc_first_trailing_one_ul: (libc)Bit Manipulation.
- * stdc_first_trailing_one_ull: (libc)Bit Manipulation.
- * stdc_first_trailing_one_us: (libc)Bit Manipulation.
- * stdc_first_trailing_zero_uc: (libc)Bit Manipulation.
- * stdc_first_trailing_zero_ui: (libc)Bit Manipulation.
- * stdc_first_trailing_zero_ul: (libc)Bit Manipulation.
- * stdc_first_trailing_zero_ull: (libc)Bit Manipulation.
- * stdc_first_trailing_zero_us: (libc)Bit Manipulation.
- * stdc_has_single_bit_uc: (libc)Bit Manipulation.
- * stdc_has_single_bit_ui: (libc)Bit Manipulation.
- * stdc_has_single_bit_ul: (libc)Bit Manipulation.
- * stdc_has_single_bit_ull: (libc)Bit Manipulation.
- * stdc_has_single_bit_us: (libc)Bit Manipulation.
- * stdc_leading_ones_uc: (libc)Bit Manipulation.
- * stdc_leading_ones_ui: (libc)Bit Manipulation.
- * stdc_leading_ones_ul: (libc)Bit Manipulation.
- * stdc_leading_ones_ull: (libc)Bit Manipulation.
- * stdc_leading_ones_us: (libc)Bit Manipulation.
- * stdc_leading_zeros_uc: (libc)Bit Manipulation.
- * stdc_leading_zeros_ui: (libc)Bit Manipulation.
- * stdc_leading_zeros_ul: (libc)Bit Manipulation.
- * stdc_leading_zeros_ull: (libc)Bit Manipulation.
- * stdc_leading_zeros_us: (libc)Bit Manipulation.
- * stdc_trailing_ones_uc: (libc)Bit Manipulation.
- * stdc_trailing_ones_ui: (libc)Bit Manipulation.
- * stdc_trailing_ones_ul: (libc)Bit Manipulation.
- * stdc_trailing_ones_ull: (libc)Bit Manipulation.
- * stdc_trailing_ones_us: (libc)Bit Manipulation.
- * stdc_trailing_zeros_uc: (libc)Bit Manipulation.
- * stdc_trailing_zeros_ui: (libc)Bit Manipulation.
- * stdc_trailing_zeros_ul: (libc)Bit Manipulation.
- * stdc_trailing_zeros_ull: (libc)Bit Manipulation.
- * stdc_trailing_zeros_us: (libc)Bit Manipulation.
- * stime: (libc)Setting and Adjusting the Time.
- * stpcpy: (libc)Copying Strings and Arrays.
- * stpncpy: (libc)Truncating Strings.
- * strcasecmp: (libc)String/Array Comparison.
- * strcasestr: (libc)Search Functions.
- * strcat: (libc)Concatenating Strings.
- * strchr: (libc)Search Functions.
- * strchrnul: (libc)Search Functions.
- * strcmp: (libc)String/Array Comparison.
- * strcoll: (libc)Collation Functions.
- * strcpy: (libc)Copying Strings and Arrays.
- * strcspn: (libc)Search Functions.
- * strdup: (libc)Copying Strings and Arrays.
- * strdupa: (libc)Copying Strings and Arrays.
- * strerror: (libc)Error Messages.
- * strerror_l: (libc)Error Messages.
- * strerror_r: (libc)Error Messages.
- * strerror_r: (libc)Error Messages.
- * strerrordesc_np: (libc)Error Messages.
- * strerrorname_np: (libc)Error Messages.
- * strfmon: (libc)Formatting Numbers.
- * strfromd: (libc)Printing of Floats.
- * strfromf: (libc)Printing of Floats.
- * strfromfN: (libc)Printing of Floats.
- * strfromfNx: (libc)Printing of Floats.
- * strfroml: (libc)Printing of Floats.
- * strfry: (libc)Shuffling Bytes.
- * strftime: (libc)Formatting Calendar Time.
- * strftime_l: (libc)Formatting Calendar Time.
- * strlcat: (libc)Truncating Strings.
- * strlcpy: (libc)Truncating Strings.
- * strlen: (libc)String Length.
- * strncasecmp: (libc)String/Array Comparison.
- * strncat: (libc)Truncating Strings.
- * strncmp: (libc)String/Array Comparison.
- * strncpy: (libc)Truncating Strings.
- * strndup: (libc)Truncating Strings.
- * strndupa: (libc)Truncating Strings.
- * strnlen: (libc)String Length.
- * strpbrk: (libc)Search Functions.
- * strptime: (libc)Low-Level Time String Parsing.
- * strrchr: (libc)Search Functions.
- * strsep: (libc)Finding Tokens in a String.
- * strsignal: (libc)Signal Messages.
- * strspn: (libc)Search Functions.
- * strstr: (libc)Search Functions.
- * strtod: (libc)Parsing of Floats.
- * strtof: (libc)Parsing of Floats.
- * strtofN: (libc)Parsing of Floats.
- * strtofNx: (libc)Parsing of Floats.
- * strtoimax: (libc)Parsing of Integers.
- * strtok: (libc)Finding Tokens in a String.
- * strtok_r: (libc)Finding Tokens in a String.
- * strtol: (libc)Parsing of Integers.
- * strtold: (libc)Parsing of Floats.
- * strtoll: (libc)Parsing of Integers.
- * strtoq: (libc)Parsing of Integers.
- * strtoul: (libc)Parsing of Integers.
- * strtoull: (libc)Parsing of Integers.
- * strtoumax: (libc)Parsing of Integers.
- * strtouq: (libc)Parsing of Integers.
- * strverscmp: (libc)String/Array Comparison.
- * strxfrm: (libc)Collation Functions.
- * stty: (libc)BSD Terminal Modes.
- * swapcontext: (libc)System V contexts.
- * swprintf: (libc)Formatted Output Functions.
- * swscanf: (libc)Formatted Input Functions.
- * symlink: (libc)Symbolic Links.
- * sync: (libc)Synchronizing I/O.
- * syscall: (libc)System Calls.
- * sysconf: (libc)Sysconf Definition.
- * syslog: (libc)syslog; vsyslog.
- * system: (libc)Running a Command.
- * sysv_signal: (libc)Basic Signal Handling.
- * tan: (libc)Trig Functions.
- * tanf: (libc)Trig Functions.
- * tanfN: (libc)Trig Functions.
- * tanfNx: (libc)Trig Functions.
- * tanh: (libc)Hyperbolic Functions.
- * tanhf: (libc)Hyperbolic Functions.
- * tanhfN: (libc)Hyperbolic Functions.
- * tanhfNx: (libc)Hyperbolic Functions.
- * tanhl: (libc)Hyperbolic Functions.
- * tanl: (libc)Trig Functions.
- * tanpi: (libc)Trig Functions.
- * tanpif: (libc)Trig Functions.
- * tanpifN: (libc)Trig Functions.
- * tanpifNx: (libc)Trig Functions.
- * tanpil: (libc)Trig Functions.
- * tcdrain: (libc)Line Control.
- * tcflow: (libc)Line Control.
- * tcflush: (libc)Line Control.
- * tcgetattr: (libc)Mode Functions.
- * tcgetpgrp: (libc)Terminal Access Functions.
- * tcgetsid: (libc)Terminal Access Functions.
- * tcsendbreak: (libc)Line Control.
- * tcsetattr: (libc)Mode Functions.
- * tcsetpgrp: (libc)Terminal Access Functions.
- * tdelete: (libc)Tree Search Function.
- * tdestroy: (libc)Tree Search Function.
- * telldir: (libc)Random Access Directory.
- * tempnam: (libc)Temporary Files.
- * textdomain: (libc)Locating gettext catalog.
- * tfind: (libc)Tree Search Function.
- * tgamma: (libc)Special Functions.
- * tgammaf: (libc)Special Functions.
- * tgammafN: (libc)Special Functions.
- * tgammafNx: (libc)Special Functions.
- * tgammal: (libc)Special Functions.
- * tgkill: (libc)Signaling Another Process.
- * thrd_create: (libc)ISO C Thread Management.
- * thrd_current: (libc)ISO C Thread Management.
- * thrd_detach: (libc)ISO C Thread Management.
- * thrd_equal: (libc)ISO C Thread Management.
- * thrd_exit: (libc)ISO C Thread Management.
- * thrd_join: (libc)ISO C Thread Management.
- * thrd_sleep: (libc)ISO C Thread Management.
- * thrd_yield: (libc)ISO C Thread Management.
- * time: (libc)Getting the Time.
- * timegm: (libc)Broken-down Time.
- * timelocal: (libc)Broken-down Time.
- * times: (libc)Processor Time.
- * timespec_get: (libc)Getting the Time.
- * timespec_getres: (libc)Getting the Time.
- * tmpfile64: (libc)Temporary Files.
- * tmpfile: (libc)Temporary Files.
- * tmpnam: (libc)Temporary Files.
- * tmpnam_r: (libc)Temporary Files.
- * toascii: (libc)Case Conversion.
- * tolower: (libc)Case Conversion.
- * totalorder: (libc)FP Comparison Functions.
- * totalorderf: (libc)FP Comparison Functions.
- * totalorderfN: (libc)FP Comparison Functions.
- * totalorderfNx: (libc)FP Comparison Functions.
- * totalorderl: (libc)FP Comparison Functions.
- * totalordermag: (libc)FP Comparison Functions.
- * totalordermagf: (libc)FP Comparison Functions.
- * totalordermagfN: (libc)FP Comparison Functions.
- * totalordermagfNx: (libc)FP Comparison Functions.
- * totalordermagl: (libc)FP Comparison Functions.
- * toupper: (libc)Case Conversion.
- * towctrans: (libc)Wide Character Case Conversion.
- * towlower: (libc)Wide Character Case Conversion.
- * towupper: (libc)Wide Character Case Conversion.
- * trunc: (libc)Rounding Functions.
- * truncate64: (libc)File Size.
- * truncate: (libc)File Size.
- * truncf: (libc)Rounding Functions.
- * truncfN: (libc)Rounding Functions.
- * truncfNx: (libc)Rounding Functions.
- * truncl: (libc)Rounding Functions.
- * tsearch: (libc)Tree Search Function.
- * tss_create: (libc)ISO C Thread-local Storage.
- * tss_delete: (libc)ISO C Thread-local Storage.
- * tss_get: (libc)ISO C Thread-local Storage.
- * tss_set: (libc)ISO C Thread-local Storage.
- * ttyname: (libc)Is It a Terminal.
- * ttyname_r: (libc)Is It a Terminal.
- * twalk: (libc)Tree Search Function.
- * twalk_r: (libc)Tree Search Function.
- * tzset: (libc)Time Zone State.
- * uabs: (libc)Absolute Value.
- * ufromfp: (libc)Rounding Functions.
- * ufromfpf: (libc)Rounding Functions.
- * ufromfpfN: (libc)Rounding Functions.
- * ufromfpfNx: (libc)Rounding Functions.
- * ufromfpl: (libc)Rounding Functions.
- * ufromfpx: (libc)Rounding Functions.
- * ufromfpxf: (libc)Rounding Functions.
- * ufromfpxfN: (libc)Rounding Functions.
- * ufromfpxfNx: (libc)Rounding Functions.
- * ufromfpxl: (libc)Rounding Functions.
- * ulabs: (libc)Absolute Value.
- * ulimit: (libc)Limits on Resources.
- * ullabs: (libc)Absolute Value.
- * umask: (libc)Setting Permissions.
- * umaxabs: (libc)Absolute Value.
- * umount2: (libc)Mount-Unmount-Remount.
- * umount: (libc)Mount-Unmount-Remount.
- * uname: (libc)Platform Type.
- * ungetc: (libc)How Unread.
- * ungetwc: (libc)How Unread.
- * unlink: (libc)Deleting Files.
- * unlinkat: (libc)Deleting Files.
- * unlockpt: (libc)Allocation.
- * unsetenv: (libc)Environment Access.
- * updwtmp: (libc)Manipulating the Database.
- * utime: (libc)File Times.
- * utimensat: (libc)File Times.
- * utimes: (libc)File Times.
- * utmpname: (libc)Manipulating the Database.
- * utmpxname: (libc)XPG Functions.
- * va_arg: (libc)Argument Macros.
- * va_copy: (libc)Argument Macros.
- * va_end: (libc)Argument Macros.
- * va_start: (libc)Argument Macros.
- * valloc: (libc)Aligned Memory Blocks.
- * vasprintf: (libc)Variable Arguments Output.
- * vdprintf: (libc)Variable Arguments Output.
- * verr: (libc)Error Messages.
- * verrx: (libc)Error Messages.
- * versionsort64: (libc)Scanning Directory Content.
- * versionsort: (libc)Scanning Directory Content.
- * vfork: (libc)Creating a Process.
- * vfprintf: (libc)Variable Arguments Output.
- * vfscanf: (libc)Variable Arguments Input.
- * vfwprintf: (libc)Variable Arguments Output.
- * vfwscanf: (libc)Variable Arguments Input.
- * vlimit: (libc)Limits on Resources.
- * vprintf: (libc)Variable Arguments Output.
- * vscanf: (libc)Variable Arguments Input.
- * vsnprintf: (libc)Variable Arguments Output.
- * vsprintf: (libc)Variable Arguments Output.
- * vsscanf: (libc)Variable Arguments Input.
- * vswprintf: (libc)Variable Arguments Output.
- * vswscanf: (libc)Variable Arguments Input.
- * vsyslog: (libc)syslog; vsyslog.
- * vwarn: (libc)Error Messages.
- * vwarnx: (libc)Error Messages.
- * vwprintf: (libc)Variable Arguments Output.
- * vwscanf: (libc)Variable Arguments Input.
- * wait3: (libc)BSD Wait Functions.
- * wait4: (libc)Process Completion.
- * wait: (libc)Process Completion.
- * waitpid: (libc)Process Completion.
- * warn: (libc)Error Messages.
- * warnx: (libc)Error Messages.
- * wcpcpy: (libc)Copying Strings and Arrays.
- * wcpncpy: (libc)Truncating Strings.
- * wcrtomb: (libc)Converting a Character.
- * wcscasecmp: (libc)String/Array Comparison.
- * wcscat: (libc)Concatenating Strings.
- * wcschr: (libc)Search Functions.
- * wcschrnul: (libc)Search Functions.
- * wcscmp: (libc)String/Array Comparison.
- * wcscoll: (libc)Collation Functions.
- * wcscpy: (libc)Copying Strings and Arrays.
- * wcscspn: (libc)Search Functions.
- * wcsdup: (libc)Copying Strings and Arrays.
- * wcsftime: (libc)Formatting Calendar Time.
- * wcslcat: (libc)Truncating Strings.
- * wcslcpy: (libc)Truncating Strings.
- * wcslen: (libc)String Length.
- * wcsncasecmp: (libc)String/Array Comparison.
- * wcsncat: (libc)Truncating Strings.
- * wcsncmp: (libc)String/Array Comparison.
- * wcsncpy: (libc)Truncating Strings.
- * wcsnlen: (libc)String Length.
- * wcsnrtombs: (libc)Converting Strings.
- * wcspbrk: (libc)Search Functions.
- * wcsrchr: (libc)Search Functions.
- * wcsrtombs: (libc)Converting Strings.
- * wcsspn: (libc)Search Functions.
- * wcsstr: (libc)Search Functions.
- * wcstod: (libc)Parsing of Floats.
- * wcstof: (libc)Parsing of Floats.
- * wcstofN: (libc)Parsing of Floats.
- * wcstofNx: (libc)Parsing of Floats.
- * wcstoimax: (libc)Parsing of Integers.
- * wcstok: (libc)Finding Tokens in a String.
- * wcstol: (libc)Parsing of Integers.
- * wcstold: (libc)Parsing of Floats.
- * wcstoll: (libc)Parsing of Integers.
- * wcstombs: (libc)Non-reentrant String Conversion.
- * wcstoq: (libc)Parsing of Integers.
- * wcstoul: (libc)Parsing of Integers.
- * wcstoull: (libc)Parsing of Integers.
- * wcstoumax: (libc)Parsing of Integers.
- * wcstouq: (libc)Parsing of Integers.
- * wcswcs: (libc)Search Functions.
- * wcsxfrm: (libc)Collation Functions.
- * wctob: (libc)Converting a Character.
- * wctomb: (libc)Non-reentrant Character Conversion.
- * wctrans: (libc)Wide Character Case Conversion.
- * wctype: (libc)Classification of Wide Characters.
- * wmemchr: (libc)Search Functions.
- * wmemcmp: (libc)String/Array Comparison.
- * wmemcpy: (libc)Copying Strings and Arrays.
- * wmemmove: (libc)Copying Strings and Arrays.
- * wmempcpy: (libc)Copying Strings and Arrays.
- * wmemset: (libc)Copying Strings and Arrays.
- * wordexp: (libc)Calling Wordexp.
- * wordfree: (libc)Calling Wordexp.
- * wprintf: (libc)Formatted Output Functions.
- * write: (libc)I/O Primitives.
- * writev: (libc)Scatter-Gather.
- * wscanf: (libc)Formatted Input Functions.
- * y0: (libc)Special Functions.
- * y0f: (libc)Special Functions.
- * y0fN: (libc)Special Functions.
- * y0fNx: (libc)Special Functions.
- * y0l: (libc)Special Functions.
- * y1: (libc)Special Functions.
- * y1f: (libc)Special Functions.
- * y1fN: (libc)Special Functions.
- * y1fNx: (libc)Special Functions.
- * y1l: (libc)Special Functions.
- * yn: (libc)Special Functions.
- * ynf: (libc)Special Functions.
- * ynfN: (libc)Special Functions.
- * ynfNx: (libc)Special Functions.
- * ynl: (libc)Special Functions.
- END-INFO-DIR-ENTRY
- File: libc.info, Node: Local Modes, Next: Line Speed, Prev: Control Modes, Up: Terminal Modes
- 17.5.7 Local Modes
- ------------------
- This section describes the flags for the ‘c_lflag’ member of the ‘struct
- termios’ structure. These flags generally control higher-level aspects
- of input processing than the input modes flags described in *note Input
- Modes::, such as echoing, signals, and the choice of canonical or
- noncanonical input.
- The ‘c_lflag’ member itself is an integer, and you change the flags
- and fields using the operators ‘&’, ‘|’, and ‘^’. Don't try to specify
- the entire value for ‘c_lflag’--instead, change only specific flags and
- leave the rest untouched (*note Setting Modes::).
- -- Macro: tcflag_t ICANON
- This bit, if set, enables canonical input processing mode.
- Otherwise, input is processed in noncanonical mode. *Note
- Canonical or Not::.
- -- Macro: tcflag_t ECHO
- If this bit is set, echoing of input characters back to the
- terminal is enabled.
- -- Macro: tcflag_t ECHOE
- If this bit is set, echoing indicates erasure of input with the
- ERASE character by erasing the last character in the current line
- from the screen. Otherwise, the character erased is re-echoed to
- show what has happened (suitable for a printing terminal).
- This bit only controls the display behavior; the ‘ICANON’ bit by
- itself controls actual recognition of the ERASE character and
- erasure of input, without which ‘ECHOE’ is simply irrelevant.
- -- Macro: tcflag_t ECHOPRT
- This bit, like ‘ECHOE’, enables display of the ERASE character in a
- way that is geared to a hardcopy terminal. When you type the ERASE
- character, a ‘\’ character is printed followed by the first
- character erased. Typing the ERASE character again just prints the
- next character erased. Then, the next time you type a normal
- character, a ‘/’ character is printed before the character echoes.
- This is a BSD extension, and exists only in BSD systems and
- GNU/Linux and GNU/Hurd systems.
- -- Macro: tcflag_t ECHOK
- This bit enables special display of the KILL character by moving to
- a new line after echoing the KILL character normally. The behavior
- of ‘ECHOKE’ (below) is nicer to look at.
- If this bit is not set, the KILL character echoes just as it would
- if it were not the KILL character. Then it is up to the user to
- remember that the KILL character has erased the preceding input;
- there is no indication of this on the screen.
- This bit only controls the display behavior; the ‘ICANON’ bit by
- itself controls actual recognition of the KILL character and
- erasure of input, without which ‘ECHOK’ is simply irrelevant.
- -- Macro: tcflag_t ECHOKE
- This bit is similar to ‘ECHOK’. It enables special display of the
- KILL character by erasing on the screen the entire line that has
- been killed. This is a BSD extension, and exists only in BSD
- systems and GNU/Linux and GNU/Hurd systems.
- -- Macro: tcflag_t ECHONL
- If this bit is set and the ‘ICANON’ bit is also set, then the
- newline (‘'\n'’) character is echoed even if the ‘ECHO’ bit is not
- set.
- -- Macro: tcflag_t ECHOCTL
- If this bit is set and the ‘ECHO’ bit is also set, echo control
- characters with ‘^’ followed by the corresponding text character.
- Thus, control-A echoes as ‘^A’. This is usually the preferred mode
- for interactive input, because echoing a control character back to
- the terminal could have some undesired effect on the terminal.
- This is a BSD extension, and exists only in BSD systems and
- GNU/Linux and GNU/Hurd systems.
- -- Macro: tcflag_t ISIG
- This bit controls whether the INTR, QUIT, and SUSP characters are
- recognized. The functions associated with these characters are
- performed if and only if this bit is set. Being in canonical or
- noncanonical input mode has no effect on the interpretation of
- these characters.
- You should use caution when disabling recognition of these
- characters. Programs that cannot be interrupted interactively are
- very user-unfriendly. If you clear this bit, your program should
- provide some alternate interface that allows the user to
- interactively send the signals associated with these characters, or
- to escape from the program.
- *Note Signal Characters::.
- -- Macro: tcflag_t IEXTEN
- POSIX.1 gives ‘IEXTEN’ implementation-defined meaning, so you
- cannot rely on this interpretation on all systems.
- On BSD systems and GNU/Linux and GNU/Hurd systems, it enables the
- LNEXT and DISCARD characters. *Note Other Special::.
- -- Macro: tcflag_t NOFLSH
- Normally, the INTR, QUIT, and SUSP characters cause input and
- output queues for the terminal to be cleared. If this bit is set,
- the queues are not cleared.
- -- Macro: tcflag_t TOSTOP
- If this bit is set and the system supports job control, then
- ‘SIGTTOU’ signals are generated by background processes that
- attempt to write to the terminal. *Note Access to the Terminal::.
- The following bits are BSD extensions; they exist only on BSD systems
- and GNU/Hurd systems.
- -- Macro: tcflag_t ALTWERASE
- This bit determines how far the WERASE character should erase. The
- WERASE character erases back to the beginning of a word; the
- question is, where do words begin?
- If this bit is clear, then the beginning of a word is a
- nonwhitespace character following a whitespace character. If the
- bit is set, then the beginning of a word is an alphanumeric
- character or underscore following a character which is none of
- those.
- *Note Editing Characters::, for more information about the WERASE
- character.
- -- Macro: tcflag_t FLUSHO
- This is the bit that toggles when the user types the DISCARD
- character. While this bit is set, all output is discarded. *Note
- Other Special::.
- -- Macro: tcflag_t NOKERNINFO
- Setting this bit disables handling of the STATUS character. *Note
- Other Special::.
- -- Macro: tcflag_t PENDIN
- If this bit is set, it indicates that there is a line of input that
- needs to be reprinted. Typing the REPRINT character sets this bit;
- the bit remains set until reprinting is finished. *Note Editing
- Characters::.
- File: libc.info, Node: Line Speed, Next: Special Characters, Prev: Local Modes, Up: Terminal Modes
- 17.5.8 Line Speed
- -----------------
- The terminal line speed tells the computer how fast to read and write
- data on the terminal.
- For standard asynchronous serial lines employing binary NRZ encoding
- such as RS232, RS422, RS423, or RS485, the terminal speed will equal the
- physical layer baud rate including asynchronous framing and parity bits.
- This needs to match the communication speed expected by the peer device,
- or communication will not work. Which particular speeds are supported
- by any particular interface is hardware specific.
- For other types of devices the meaning of the line speed is
- device-specific and may not even affect the actual data transmission
- speed at all (for example, if it is a pseudo-terminal or network
- connection), but some programs will use it to determine the amount of
- padding needed. It's best to specify a line speed value that matches
- the actual speed of the actual terminal, but you can safely experiment
- with different values to vary the amount of padding.
- As the terminal interface models an RS232 serial interface (*note
- Terminal Device Model::), the term "baud rate" is frequently used as a
- direct alias for "line speed"; this convention is followed in the
- following descriptions.
- There are actually two line speeds for each terminal, one for input
- and one for output. You can set them independently, but most often
- terminals use the same speed for both directions. If the hardware does
- not support different speeds for each direction, the output speed will
- be used for both input and output.
- Specifying an output speed of zero generates a modem disconnect
- request. For the ‘speed_t’ interface, this is the constant ‘B0’ which
- may or may not have the numeric value 0.
- Specifying an input speed value of zero sets the input speed to equal
- the output speed. This is the numeric constant 0 (not necessarily the
- same as ‘B0’) for both the ‘speed_t’ and ‘baud_t’ interfaces. This use
- is deprecated.
- The line speed values are stored in the ‘struct termios’ structure,
- but don't try to access them in the ‘struct termios’ structure directly.
- Instead, you should use the functions defined by the interfaces below to
- access them.
- The line speed setting functions report errors only when attempting
- to set line rate values that the system simply cannot handle. If you
- specify a line speed value that is plausible for the system, then the
- functions will succeed. However, they do not check that a particular
- hardware device can actually support the specified value--in fact, they
- don't know which device you plan to set the line speed for until
- ‘tcsetattr’ is called. If you use ‘tcsetattr’ to set the speed of a
- particular device to a value that it cannot handle, either ‘tcsetattr’
- returns -1 and sets ‘errno’ to ‘EINVAL’, or the value is adjusted to the
- closest supported value, depending on the policy of the kernel driver.
- In the latter case, a subsequent call to ‘tcgetattr’ may or may not
- reflect this adjustment.
- The GNU C Library supports two interoperable interfaces for setting
- the line speed: the POSIX.1 ‘speed_t’ interface, which requires the use
- of a set of enumerated constants, and the ‘baud_t’ interface, a GNU
- extension, which is guaranteed to use plain numeric values.
- 17.5.8.1 The ‘speed_t’ interface
- ................................
- -- Data Type: speed_t
- The ‘speed_t’ type is an unsigned integer data type used to
- represent line speeds.
- *Portability note:* In the current version of the GNU C Library,
- the ‘speed_t’ type is numerically indentical to the line speed
- rate. Other libraries and older versions of the GNU C Library may
- require speeds to be indicated by enumerated constants, which may
- not be numerically identical to the requested line speed. For
- portability, you must use one of the following symbols to represent
- the speed; their precise numeric values are system-dependent, but
- each name has a fixed meaning: ‘B110’ stands for 110 bps, ‘B300’
- for 300 bps, and so on. There is no portable way to represent any
- speed but these.
- B0 B50 B75 B110 B134 B150 B200 B300 B600 B1200
- B1800 B2400 B4800 B9600 B19200 B38400
- The GNU C Library defines these additional constants:
- B7200 B14400 B28800 B33600 B57600 B76800 B115200 B153600 B230400 B307200
- B460800 B500000 B576000 B614400 B921600 B1000000 B1152000 B1500000
- B2000000 B2500000 B3000000 B3500000 B4000000 B5000000 B10000000
- BSD defines two additional speed symbols as aliases: ‘EXTA’ is an
- alias for ‘B19200’ and ‘EXTB’ is an alias for ‘B38400’. These aliases
- are obsolete.
- -- Macro: speed_t SPEED_MAX
- The GNU C Library defines the constant ‘SPEED_MAX’ for the largest
- valid value of type ‘speed_t’. This value may be smaller than the
- underlying C type can store.
- For compatiblity with some other platforms the alias ‘__MAX_BAUD’
- is defined for this constant.
- -- Function: speed_t cfgetospeed (const struct termios *TERMIOS-P)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function returns the output line speed stored in the structure
- ‘*TERMIOS-P’.
- -- Function: speed_t cfgetispeed (const struct termios *TERMIOS-P)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function returns the input line speed stored in the structure
- ‘*TERMIOS-P’.
- -- Function: int cfsetospeed (struct termios *TERMIOS-P, speed_t SPEED)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function stores SPEED in ‘*TERMIOS-P’ as the output line
- speed. If SPEED is ‘B0’, generates a modem disconnect request.
- If SPEED is neither a plausible line speed nor ‘B0’, ‘cfsetospeed’
- returns -1 and sets ‘errno’ to ‘EINVAL’.
- -- Function: int cfsetispeed (struct termios *TERMIOS-P, speed_t SPEED)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function stores SPEED in ‘*TERMIOS-P’ as the input speed. If
- SPEED is 0, the input speed is set to equal the output speed; note
- that POSIX.1 specifies this as the numeric value 0 which is not
- required to equal the constant ‘B0’.
- If SPEED is not a plausible line speed or 0, ‘cfsetispeed’ returns
- -1 and sets ‘errno’ to ‘EINVAL’.
- *Portability note:* POSIX.1-2024 has deprecated setting of the
- input speed to 0 to set the input line speed to equal the output
- line speed. After calling ‘tcsetattr’ followed by ‘tcgetattr’,
- ‘cfgetispeed’ may report the input line speed either as 0 or the
- same as ‘cfgetospeed’.
- -- Function: int cfsetspeed (struct termios *TERMIOS-P, speed_t SPEED)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function stores SPEED in ‘*TERMIOS-P’ as both the input and
- output speeds.
- If BAUD is not a plausible line speed, ‘cfsetbaud’ returns -1 and
- sets ‘errno’ to ‘EINVAL’.
- This function is an extension which originated in 4.4 BSD.
- 17.5.8.2 The ‘baud_t’ interface
- ...............................
- -- Data Type: baud_t
- The ‘baud_t’ type is a numeric data type used to represent line
- baud rates. It will always represent the actual numeric value
- corresponding to the line speed, unlike ‘speed_t’. In the current
- version of the GNU C Library this is the same type as ‘speed_t’,
- but this may not be the case in future versions or on other
- implementations; it is specifically not guaranteed to be an integer
- type.
- -- Macro: baud_t BAUD_MAX
- The constant ‘BAUD_MAX’ is defined to the maximum valid value of
- type ‘baud_t’. This value may be smaller than the underlying C
- type can store.
- -- Function: baud_t cfgetobaud (const struct termios *TERMIOS-P)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function returns the output line speed stored in the structure
- ‘*TERMIOS-P’ as a numeric value.
- -- Function: baud_t cfgetibaud (const struct termios *TERMIOS-P)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function returns the input line speed stored in the structure
- ‘*TERMIOS-P’ as a numeric value.
- -- Function: int cfsetobaud (struct termios *TERMIOS-P, baud_t BAUD)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function stores BAUD in ‘*TERMIOS-P’ as the output line speed.
- If BAUD is 0, generates a modem disconnect.
- If SPEED is not a plausible line speed, ‘cfsetspeed’ returns -1 and
- sets ‘errno’ to ‘EINVAL’.
- -- Function: int cfsetibaud (struct termios *TERMIOS-P, baud_t BAUD)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function stores BAUD in ‘*TERMIOS-P’ as the input line speed.
- To simplify conversions from the ‘speed_t’ interface, setting the
- input line speed to 0 is interpreted as setting the input line
- speed equal to the output line speed. The caveats described under
- ‘cfsetispeed’ apply equally to ‘cfsetibaud’. As for ‘cfsetispeed’,
- this usage is deprecated.
- If BAUD is not a plausible line speed or 0, ‘cfsetibaud’ returns -1
- and sets ‘errno’ to ‘EINVAL’.
- -- Function: int cfsetbaud (struct termios *TERMIOS-P, baud_t BAUD)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function stores BAUD in ‘*TERMIOS-P’ as both the input and
- output line speeds.
- If BAUD is not a plausible line speed, ‘cfsetbaud’ returns -1 and
- sets ‘errno’ to ‘EINVAL’.
- File: libc.info, Node: Special Characters, Next: Noncanonical Input, Prev: Line Speed, Up: Terminal Modes
- 17.5.9 Special Characters
- -------------------------
- In canonical input, the terminal driver recognizes a number of special
- characters which perform various control functions. These include the
- ERASE character (usually <DEL>) for editing input, and other editing
- characters. The INTR character (normally ‘C-c’) for sending a ‘SIGINT’
- signal, and other signal-raising characters, may be available in either
- canonical or noncanonical input mode. All these characters are
- described in this section.
- The particular characters used are specified in the ‘c_cc’ member of
- the ‘struct termios’ structure. This member is an array; each element
- specifies the character for a particular role. Each element has a
- symbolic constant that stands for the index of that element--for
- example, ‘VINTR’ is the index of the element that specifies the INTR
- character, so storing ‘'='’ in ‘TERMIOS.c_cc[VINTR]’ specifies ‘=’ as
- the INTR character.
- On some systems, you can disable a particular special character
- function by specifying the value ‘_POSIX_VDISABLE’ for that role. This
- value is unequal to any possible character code. *Note Options for
- Files::, for more information about how to tell whether the operating
- system you are using supports ‘_POSIX_VDISABLE’.
- * Menu:
- * Editing Characters:: Special characters that terminate lines and
- delete text, and other editing functions.
- * Signal Characters:: Special characters that send or raise signals
- to or for certain classes of processes.
- * Start/Stop Characters:: Special characters that suspend or resume
- suspended output.
- * Other Special:: Other special characters for BSD systems:
- they can discard output, and print status.
- File: libc.info, Node: Editing Characters, Next: Signal Characters, Up: Special Characters
- 17.5.9.1 Characters for Input Editing
- .....................................
- These special characters are active only in canonical input mode. *Note
- Canonical or Not::.
- -- Macro: int VEOF
- This is the subscript for the EOF character in the special control
- character array. ‘TERMIOS.c_cc[VEOF]’ holds the character itself.
- The EOF character is recognized only in canonical input mode. It
- acts as a line terminator in the same way as a newline character,
- but if the EOF character is typed at the beginning of a line it
- causes ‘read’ to return a byte count of zero, indicating
- end-of-file. The EOF character itself is discarded.
- Usually, the EOF character is ‘C-d’.
- -- Macro: int VEOL
- This is the subscript for the EOL character in the special control
- character array. ‘TERMIOS.c_cc[VEOL]’ holds the character itself.
- The EOL character is recognized only in canonical input mode. It
- acts as a line terminator, just like a newline character. The EOL
- character is not discarded; it is read as the last character in the
- input line.
- You don't need to use the EOL character to make <RET> end a line.
- Just set the ICRNL flag. In fact, this is the default state of
- affairs.
- -- Macro: int VEOL2
- This is the subscript for the EOL2 character in the special control
- character array. ‘TERMIOS.c_cc[VEOL2]’ holds the character itself.
- The EOL2 character works just like the EOL character (see above),
- but it can be a different character. Thus, you can specify two
- characters to terminate an input line, by setting EOL to one of
- them and EOL2 to the other.
- The EOL2 character is a BSD extension; it exists only on BSD
- systems and GNU/Linux and GNU/Hurd systems.
- -- Macro: int VERASE
- This is the subscript for the ERASE character in the special
- control character array. ‘TERMIOS.c_cc[VERASE]’ holds the
- character itself.
- The ERASE character is recognized only in canonical input mode.
- When the user types the erase character, the previous character
- typed is discarded. (If the terminal generates multibyte character
- sequences, this may cause more than one byte of input to be
- discarded.) This cannot be used to erase past the beginning of the
- current line of text. The ERASE character itself is discarded.
- Usually, the ERASE character is <DEL>.
- -- Macro: int VWERASE
- This is the subscript for the WERASE character in the special
- control character array. ‘TERMIOS.c_cc[VWERASE]’ holds the
- character itself.
- The WERASE character is recognized only in canonical mode. It
- erases an entire word of prior input, and any whitespace after it;
- whitespace characters before the word are not erased.
- The definition of a "word" depends on the setting of the
- ‘ALTWERASE’ mode; *note Local Modes::.
- If the ‘ALTWERASE’ mode is not set, a word is defined as a sequence
- of any characters except space or tab.
- If the ‘ALTWERASE’ mode is set, a word is defined as a sequence of
- characters containing only letters, numbers, and underscores,
- optionally followed by one character that is not a letter, number,
- or underscore.
- The WERASE character is usually ‘C-w’.
- This is a BSD extension.
- -- Macro: int VKILL
- This is the subscript for the KILL character in the special control
- character array. ‘TERMIOS.c_cc[VKILL]’ holds the character itself.
- The KILL character is recognized only in canonical input mode.
- When the user types the kill character, the entire contents of the
- current line of input are discarded. The kill character itself is
- discarded too.
- The KILL character is usually ‘C-u’.
- -- Macro: int VREPRINT
- This is the subscript for the REPRINT character in the special
- control character array. ‘TERMIOS.c_cc[VREPRINT]’ holds the
- character itself.
- The REPRINT character is recognized only in canonical mode. It
- reprints the current input line. If some asynchronous output has
- come while you are typing, this lets you see the line you are
- typing clearly again.
- The REPRINT character is usually ‘C-r’.
- This is a BSD extension.
- File: libc.info, Node: Signal Characters, Next: Start/Stop Characters, Prev: Editing Characters, Up: Special Characters
- 17.5.9.2 Characters that Cause Signals
- ......................................
- These special characters may be active in either canonical or
- noncanonical input mode, but only when the ‘ISIG’ flag is set (*note
- Local Modes::).
- -- Macro: int VINTR
- This is the subscript for the INTR character in the special control
- character array. ‘TERMIOS.c_cc[VINTR]’ holds the character itself.
- The INTR (interrupt) character raises a ‘SIGINT’ signal for all
- processes in the foreground job associated with the terminal. The
- INTR character itself is then discarded. *Note Signal Handling::,
- for more information about signals.
- Typically, the INTR character is ‘C-c’.
- -- Macro: int VQUIT
- This is the subscript for the QUIT character in the special control
- character array. ‘TERMIOS.c_cc[VQUIT]’ holds the character itself.
- The QUIT character raises a ‘SIGQUIT’ signal for all processes in
- the foreground job associated with the terminal. The QUIT
- character itself is then discarded. *Note Signal Handling::, for
- more information about signals.
- Typically, the QUIT character is ‘C-\’.
- -- Macro: int VSUSP
- This is the subscript for the SUSP character in the special control
- character array. ‘TERMIOS.c_cc[VSUSP]’ holds the character itself.
- The SUSP (suspend) character is recognized only if the
- implementation supports job control (*note Job Control::). It
- causes a ‘SIGTSTP’ signal to be sent to all processes in the
- foreground job associated with the terminal. The SUSP character
- itself is then discarded. *Note Signal Handling::, for more
- information about signals.
- Typically, the SUSP character is ‘C-z’.
- Few applications disable the normal interpretation of the SUSP
- character. If your program does this, it should provide some other
- mechanism for the user to stop the job. When the user invokes this
- mechanism, the program should send a ‘SIGTSTP’ signal to the process
- group of the process, not just to the process itself. *Note Signaling
- Another Process::.
- -- Macro: int VDSUSP
- This is the subscript for the DSUSP character in the special
- control character array. ‘TERMIOS.c_cc[VDSUSP]’ holds the
- character itself.
- The DSUSP (suspend) character is recognized only if the
- implementation supports job control (*note Job Control::). It
- sends a ‘SIGTSTP’ signal, like the SUSP character, but not right
- away--only when the program tries to read it as input. Not all
- systems with job control support DSUSP; only BSD-compatible systems
- do (including GNU/Hurd systems).
- *Note Signal Handling::, for more information about signals.
- Typically, the DSUSP character is ‘C-y’.
- File: libc.info, Node: Start/Stop Characters, Next: Other Special, Prev: Signal Characters, Up: Special Characters
- 17.5.9.3 Special Characters for Flow Control
- ............................................
- These special characters may be active in either canonical or
- noncanonical input mode, but their use is controlled by the flags ‘IXON’
- and ‘IXOFF’ (*note Input Modes::).
- -- Macro: int VSTART
- This is the subscript for the START character in the special
- control character array. ‘TERMIOS.c_cc[VSTART]’ holds the
- character itself.
- The START character is used to support the ‘IXON’ and ‘IXOFF’ input
- modes. If ‘IXON’ is set, receiving a START character resumes
- suspended output; the START character itself is discarded. If
- ‘IXANY’ is set, receiving any character at all resumes suspended
- output; the resuming character is not discarded unless it is the
- START character. If ‘IXOFF’ is set, the system may also transmit
- START characters to the terminal.
- The usual value for the START character is ‘C-q’. You may not be
- able to change this value--the hardware may insist on using ‘C-q’
- regardless of what you specify.
- -- Macro: int VSTOP
- This is the subscript for the STOP character in the special control
- character array. ‘TERMIOS.c_cc[VSTOP]’ holds the character itself.
- The STOP character is used to support the ‘IXON’ and ‘IXOFF’ input
- modes. If ‘IXON’ is set, receiving a STOP character causes output
- to be suspended; the STOP character itself is discarded. If
- ‘IXOFF’ is set, the system may also transmit STOP characters to the
- terminal, to prevent the input queue from overflowing.
- The usual value for the STOP character is ‘C-s’. You may not be
- able to change this value--the hardware may insist on using ‘C-s’
- regardless of what you specify.
- File: libc.info, Node: Other Special, Prev: Start/Stop Characters, Up: Special Characters
- 17.5.9.4 Other Special Characters
- .................................
- -- Macro: int VLNEXT
- This is the subscript for the LNEXT character in the special
- control character array. ‘TERMIOS.c_cc[VLNEXT]’ holds the
- character itself.
- The LNEXT character is recognized only when ‘IEXTEN’ is set, but in
- both canonical and noncanonical mode. It disables any special
- significance of the next character the user types. Even if the
- character would normally perform some editing function or generate
- a signal, it is read as a plain character. This is the analogue of
- the ‘C-q’ command in Emacs. "LNEXT" stands for "literal next."
- The LNEXT character is usually ‘C-v’.
- This character is available on BSD systems and GNU/Linux and
- GNU/Hurd systems.
- -- Macro: int VDISCARD
- This is the subscript for the DISCARD character in the special
- control character array. ‘TERMIOS.c_cc[VDISCARD]’ holds the
- character itself.
- The DISCARD character is recognized only when ‘IEXTEN’ is set, but
- in both canonical and noncanonical mode. Its effect is to toggle
- the discard-output flag. When this flag is set, all program output
- is discarded. Setting the flag also discards all output currently
- in the output buffer. Typing any other character resets the flag.
- This character is available on BSD systems and GNU/Linux and
- GNU/Hurd systems.
- -- Macro: int VSTATUS
- This is the subscript for the STATUS character in the special
- control character array. ‘TERMIOS.c_cc[VSTATUS]’ holds the
- character itself.
- The STATUS character's effect is to print out a status message
- about how the current process is running.
- The STATUS character is recognized only in canonical mode, and only
- if ‘NOKERNINFO’ is not set.
- This character is available only on BSD systems and GNU/Hurd
- systems.
- File: libc.info, Node: Noncanonical Input, Prev: Special Characters, Up: Terminal Modes
- 17.5.10 Noncanonical Input
- --------------------------
- In noncanonical input mode, the special editing characters such as ERASE
- and KILL are ignored. The system facilities for the user to edit input
- are disabled in noncanonical mode, so that all input characters (unless
- they are special for signal or flow-control purposes) are passed to the
- application program exactly as typed. It is up to the application
- program to give the user ways to edit the input, if appropriate.
- Noncanonical mode offers special parameters called MIN and TIME for
- controlling whether and how long to wait for input to be available. You
- can even use them to avoid ever waiting--to return immediately with
- whatever input is available, or with no input.
- The MIN and TIME are stored in elements of the ‘c_cc’ array, which is
- a member of the ‘struct termios’ structure. Each element of this array
- has a particular role, and each element has a symbolic constant that
- stands for the index of that element. ‘VMIN’ and ‘VTIME’ are the names
- for the indices in the array of the MIN and TIME slots.
- -- Macro: int VMIN
- This is the subscript for the MIN slot in the ‘c_cc’ array. Thus,
- ‘TERMIOS.c_cc[VMIN]’ is the value itself.
- The MIN slot is only meaningful in noncanonical input mode; it
- specifies the minimum number of bytes that must be available in the
- input queue in order for ‘read’ to return.
- -- Macro: int VTIME
- This is the subscript for the TIME slot in the ‘c_cc’ array. Thus,
- ‘TERMIOS.c_cc[VTIME]’ is the value itself.
- The TIME slot is only meaningful in noncanonical input mode; it
- specifies how long to wait for input before returning, in units of
- 0.1 seconds.
- The MIN and TIME values interact to determine the criterion for when
- ‘read’ should return; their precise meanings depend on which of them are
- nonzero. There are four possible cases:
- • Both TIME and MIN are nonzero.
- In this case, TIME specifies how long to wait after each input
- character to see if more input arrives. After the first character
- received, ‘read’ keeps waiting until either MIN bytes have arrived
- in all, or TIME elapses with no further input.
- ‘read’ always blocks until the first character arrives, even if
- TIME elapses first. ‘read’ can return more than MIN characters if
- more than MIN happen to be in the queue.
- • Both MIN and TIME are zero.
- In this case, ‘read’ always returns immediately with as many
- characters as are available in the queue, up to the number
- requested. If no input is immediately available, ‘read’ returns a
- value of zero.
- • MIN is zero but TIME has a nonzero value.
- In this case, ‘read’ waits for time TIME for input to become
- available; the availability of a single byte is enough to satisfy
- the read request and cause ‘read’ to return. When it returns, it
- returns as many characters as are available, up to the number
- requested. If no input is available before the timer expires,
- ‘read’ returns a value of zero.
- • TIME is zero but MIN has a nonzero value.
- In this case, ‘read’ waits until at least MIN bytes are available
- in the queue. At that time, ‘read’ returns as many characters as
- are available, up to the number requested. ‘read’ can return more
- than MIN characters if more than MIN happen to be in the queue.
- What happens if MIN is 50 and you ask to read just 10 bytes?
- Normally, ‘read’ waits until there are 50 bytes in the buffer (or, more
- generally, the wait condition described above is satisfied), and then
- reads 10 of them, leaving the other 40 buffered in the operating system
- for a subsequent call to ‘read’.
- *Portability note:* On some systems, the MIN and TIME slots are
- actually the same as the EOF and EOL slots. This causes no serious
- problem because the MIN and TIME slots are used only in noncanonical
- input and the EOF and EOL slots are used only in canonical input, but it
- isn't very clean. The GNU C Library allocates separate slots for these
- uses.
- -- Function: void cfmakeraw (struct termios *TERMIOS-P)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function provides an easy way to set up ‘*TERMIOS-P’ for what
- has traditionally been called "raw mode" in BSD. This uses
- noncanonical input, and turns off most processing to give an
- unmodified channel to the terminal.
- It does exactly this:
- TERMIOS-P->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP
- |INLCR|IGNCR|ICRNL|IXON);
- TERMIOS-P->c_oflag &= ~OPOST;
- TERMIOS-P->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
- TERMIOS-P->c_cflag &= ~(CSIZE|PARENB);
- TERMIOS-P->c_cflag |= CS8;
- File: libc.info, Node: BSD Terminal Modes, Next: Line Control, Prev: Terminal Modes, Up: Low-Level Terminal Interface
- 17.6 BSD Terminal Modes
- =======================
- The usual way to get and set terminal modes is with the functions
- described in *note Terminal Modes::. However, on some systems you can
- use the BSD-derived functions in this section to do some of the same
- things. On many systems, these functions do not exist. Even with the
- GNU C Library, the functions simply fail with ‘errno’ = ‘ENOSYS’ with
- many kernels, including Linux.
- The symbols used in this section are declared in ‘sgtty.h’.
- -- Data Type: struct sgttyb
- This structure is an input or output parameter list for ‘gtty’ and
- ‘stty’.
- ‘char sg_ispeed’
- Line speed for input
- ‘char sg_ospeed’
- Line speed for output
- ‘char sg_erase’
- Erase character
- ‘char sg_kill’
- Kill character
- ‘int sg_flags’
- Various flags
- -- Function: int gtty (int FILEDES, struct sgttyb *ATTRIBUTES)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function gets the attributes of a terminal.
- ‘gtty’ sets *ATTRIBUTES to describe the terminal attributes of the
- terminal which is open with file descriptor FILEDES.
- -- Function: int stty (int FILEDES, const struct sgttyb *ATTRIBUTES)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function sets the attributes of a terminal.
- ‘stty’ sets the terminal attributes of the terminal which is open
- with file descriptor FILEDES to those described by *ATTRIBUTES.
- File: libc.info, Node: Line Control, Next: Noncanon Example, Prev: BSD Terminal Modes, Up: Low-Level Terminal Interface
- 17.7 Line Control Functions
- ===========================
- These functions perform miscellaneous control actions on terminal
- devices. As regards terminal access, they are treated like doing
- output: if any of these functions is used by a background process on its
- controlling terminal, normally all processes in the process group are
- sent a ‘SIGTTOU’ signal. The exception is if the calling process itself
- is ignoring or blocking ‘SIGTTOU’ signals, in which case the operation
- is performed and no signal is sent. *Note Job Control::.
- -- Function: int tcsendbreak (int FILEDES, int DURATION)
- Preliminary: | MT-Unsafe race:tcattr(filedes)/bsd | AS-Unsafe |
- AC-Unsafe corrupt/bsd | *Note POSIX Safety Concepts::.
- This function generates a break condition by transmitting a stream
- of zero bits on the terminal associated with the file descriptor
- FILEDES. The duration of the break is controlled by the DURATION
- argument. If zero, the duration is between 0.25 and 0.5 seconds.
- The meaning of a nonzero value depends on the operating system.
- This function does nothing if the terminal is not an asynchronous
- serial data port.
- The return value is normally zero. In the event of an error, a
- value of -1 is returned. The following ‘errno’ error conditions
- are defined for this function:
- ‘EBADF’
- The FILEDES is not a valid file descriptor.
- ‘ENOTTY’
- The FILEDES is not associated with a terminal device.
- -- Function: int tcdrain (int FILEDES)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- The ‘tcdrain’ function waits until all queued output to the
- terminal FILEDES has been transmitted.
- This function is a cancellation point in multi-threaded programs.
- This is a problem if the thread allocates some resources (like
- memory, file descriptors, semaphores or whatever) at the time
- ‘tcdrain’ is called. If the thread gets canceled these resources
- stay allocated until the program ends. To avoid this calls to
- ‘tcdrain’ should be protected using cancellation handlers.
- The return value is normally zero. In the event of an error, a
- value of -1 is returned. The following ‘errno’ error conditions
- are defined for this function:
- ‘EBADF’
- The FILEDES is not a valid file descriptor.
- ‘ENOTTY’
- The FILEDES is not associated with a terminal device.
- ‘EINTR’
- The operation was interrupted by delivery of a signal. *Note
- Interrupted Primitives::.
- -- Function: int tcflush (int FILEDES, int QUEUE)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- The ‘tcflush’ function is used to clear the input and/or output
- queues associated with the terminal file FILEDES. The QUEUE
- argument specifies which queue(s) to clear, and can be one of the
- following values:
- ‘TCIFLUSH’
- Clear any input data received, but not yet read.
- ‘TCOFLUSH’
- Clear any output data written, but not yet transmitted.
- ‘TCIOFLUSH’
- Clear both queued input and output.
- The return value is normally zero. In the event of an error, a
- value of -1 is returned. The following ‘errno’ error conditions
- are defined for this function:
- ‘EBADF’
- The FILEDES is not a valid file descriptor.
- ‘ENOTTY’
- The FILEDES is not associated with a terminal device.
- ‘EINVAL’
- A bad value was supplied as the QUEUE argument.
- It is unfortunate that this function is named ‘tcflush’, because
- the term "flush" is normally used for quite another
- operation--waiting until all output is transmitted--and using it
- for discarding input or output would be confusing. Unfortunately,
- the name ‘tcflush’ comes from POSIX and we cannot change it.
- -- Function: int tcflow (int FILEDES, int ACTION)
- Preliminary: | MT-Unsafe race:tcattr(filedes)/bsd | AS-Unsafe |
- AC-Safe | *Note POSIX Safety Concepts::.
- The ‘tcflow’ function is used to perform operations relating to
- XON/XOFF flow control on the terminal file specified by FILEDES.
- The ACTION argument specifies what operation to perform, and can be
- one of the following values:
- ‘TCOOFF’
- Suspend transmission of output.
- ‘TCOON’
- Restart transmission of output.
- ‘TCIOFF’
- Transmit a STOP character.
- ‘TCION’
- Transmit a START character.
- For more information about the STOP and START characters, see *note
- Special Characters::.
- The return value is normally zero. In the event of an error, a
- value of -1 is returned. The following ‘errno’ error conditions
- are defined for this function:
- ‘EBADF’
- The FILEDES is not a valid file descriptor.
- ‘ENOTTY’
- The FILEDES is not associated with a terminal device.
- ‘EINVAL’
- A bad value was supplied as the ACTION argument.
- File: libc.info, Node: Noncanon Example, Next: getpass, Prev: Line Control, Up: Low-Level Terminal Interface
- 17.8 Noncanonical Mode Example
- ==============================
- Here is an example program that shows how you can set up a terminal
- device to read single characters in noncanonical input mode, without
- echo.
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <termios.h>
- /* Use this variable to remember original terminal attributes. */
- struct termios saved_attributes;
- void
- reset_input_mode (void)
- {
- tcsetattr (STDIN_FILENO, TCSANOW, &saved_attributes);
- }
- void
- set_input_mode (void)
- {
- struct termios tattr;
- /* Make sure stdin is a terminal. */
- if (!isatty (STDIN_FILENO))
- {
- fprintf (stderr, "Not a terminal.\n");
- exit (EXIT_FAILURE);
- }
- /* Save the terminal attributes so we can restore them later. */
- tcgetattr (STDIN_FILENO, &saved_attributes);
- atexit (reset_input_mode);
- /* Set the funny terminal modes. */
- tcgetattr (STDIN_FILENO, &tattr);
- tattr.c_lflag &= ~(ICANON|ECHO); /* Clear ICANON and ECHO. */
- tattr.c_cc[VMIN] = 1;
- tattr.c_cc[VTIME] = 0;
- tcsetattr (STDIN_FILENO, TCSAFLUSH, &tattr);
- }
- int
- main (void)
- {
- char c;
- set_input_mode ();
- while (1)
- {
- read (STDIN_FILENO, &c, 1);
- if (c == '\004') /* ‘C-d’ */
- break;
- else
- write (STDOUT_FILENO, &c, 1);
- }
- return EXIT_SUCCESS;
- }
- This program is careful to restore the original terminal modes before
- exiting or terminating with a signal. It uses the ‘atexit’ function
- (*note Cleanups on Exit::) to make sure this is done by ‘exit’.
- The shell is supposed to take care of resetting the terminal modes
- when a process is stopped or continued; see *note Job Control::. But
- some existing shells do not actually do this, so you may wish to
- establish handlers for job control signals that reset terminal modes.
- The above example does so.
- File: libc.info, Node: getpass, Next: Pseudo-Terminals, Prev: Noncanon Example, Up: Low-Level Terminal Interface
- 17.9 Reading Passphrases
- ========================
- When reading in a passphrase, it is desirable to avoid displaying it on
- the screen, to help keep it secret. The following function handles this
- in a convenient way.
- -- Function: char * getpass (const char *PROMPT)
- Preliminary: | MT-Unsafe term | AS-Unsafe heap lock corrupt |
- AC-Unsafe term lock corrupt | *Note POSIX Safety Concepts::.
- ‘getpass’ outputs PROMPT, then reads a string in from the terminal
- without echoing it. It tries to connect to the real terminal,
- ‘/dev/tty’, if possible, to encourage users not to put plaintext
- passphrases in files; otherwise, it uses ‘stdin’ and ‘stderr’.
- ‘getpass’ also disables the INTR, QUIT, and SUSP characters on the
- terminal using the ‘ISIG’ terminal attribute (*note Local Modes::).
- The terminal is flushed before and after ‘getpass’, so that
- characters of a mistyped passphrase are not accidentally visible.
- In other C libraries, ‘getpass’ may only return the first
- ‘PASS_MAX’ bytes of a passphrase. The GNU C Library has no limit,
- so ‘PASS_MAX’ is undefined.
- The prototype for this function is in ‘unistd.h’. ‘PASS_MAX’ would
- be defined in ‘limits.h’.
- This precise set of operations may not suit all possible situations.
- In this case, it is recommended that users write their own ‘getpass’
- substitute. For instance, a very simple substitute is as follows:
- #include <termios.h>
- #include <stdio.h>
- ssize_t
- my_getpass (char **lineptr, size_t *n, FILE *stream)
- {
- struct termios old, new;
- int nread;
- /* Turn echoing off and fail if we can't. */
- if (tcgetattr (fileno (stream), &old) != 0)
- return -1;
- new = old;
- new.c_lflag &= ~ECHO;
- if (tcsetattr (fileno (stream), TCSAFLUSH, &new) != 0)
- return -1;
- /* Read the passphrase */
- nread = getline (lineptr, n, stream);
- /* Restore terminal. */
- (void) tcsetattr (fileno (stream), TCSAFLUSH, &old);
- return nread;
- }
- The substitute takes the same parameters as ‘getline’ (*note Line
- Input::); the user must print any prompt desired.
- File: libc.info, Node: Pseudo-Terminals, Prev: getpass, Up: Low-Level Terminal Interface
- 17.10 Pseudo-Terminals
- ======================
- A “pseudo-terminal” is a special interprocess communication channel that
- acts like a terminal. One end of the channel is called the “master”
- side or “master pseudo-terminal device”, the other side is called the
- “slave” side. Data written to the master side is received by the slave
- side as if it was the result of a user typing at an ordinary terminal,
- and data written to the slave side is sent to the master side as if it
- was written on an ordinary terminal.
- Pseudo terminals are the way programs like ‘xterm’ and ‘emacs’
- implement their terminal emulation functionality.
- * Menu:
- * Allocation:: Allocating a pseudo terminal.
- * Pseudo-Terminal Pairs:: How to open both sides of a
- pseudo-terminal in a single operation.
- File: libc.info, Node: Allocation, Next: Pseudo-Terminal Pairs, Up: Pseudo-Terminals
- 17.10.1 Allocating Pseudo-Terminals
- -----------------------------------
- This subsection describes functions for allocating a pseudo-terminal,
- and for making this pseudo-terminal available for actual use. These
- functions are declared in the header file ‘stdlib.h’.
- -- Function: int posix_openpt (int FLAGS)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe fd | *Note POSIX Safety
- Concepts::.
- ‘posix_openpt’ returns a new file descriptor for the next available
- master pseudo-terminal. In the case of an error, it returns a
- value of -1 instead, and sets ‘errno’ to indicate the error. *Note
- Opening and Closing Files:: for possible values of ‘errno’.
- FLAGS is a bit mask created from a bitwise OR of zero or more of
- the following flags:
- ‘O_RDWR’
- Open the device for both reading and writing. It is usual to
- specify this flag.
- ‘O_NOCTTY’
- Do not make the device the controlling terminal for the
- process.
- These flags are defined in ‘fcntl.h’. *Note Access Modes::.
- For this function to be available, ‘_XOPEN_SOURCE’ must be defined
- to a value greater than ‘600’. *Note Feature Test Macros::.
- -- Function: int getpt (void)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe fd | *Note POSIX Safety
- Concepts::.
- ‘getpt’ is similar to ‘posix_openpt’. This function is a GNU
- extension and should not be used in portable programs.
- The ‘getpt’ function returns a new file descriptor for the next
- available master pseudo-terminal. The normal return value from
- ‘getpt’ is a non-negative integer file descriptor. In the case of
- an error, a value of -1 is returned instead. The following ‘errno’
- conditions are defined for this function:
- ‘ENOENT’
- There are no free master pseudo-terminals available.
- -- Function: int grantpt (int FILEDES)
- Preliminary: | MT-Safe locale | AS-Unsafe dlopen plugin heap lock |
- AC-Unsafe corrupt lock fd mem | *Note POSIX Safety Concepts::.
- The ‘grantpt’ function changes the ownership and access permission
- of the slave pseudo-terminal device corresponding to the master
- pseudo-terminal device associated with the file descriptor FILEDES.
- The owner is set from the real user ID of the calling process
- (*note Process Persona::), and the group is set to a special group
- (typically “tty”) or from the real group ID of the calling process.
- The access permission is set such that the file is both readable
- and writable by the owner and only writable by the group.
- On some systems this function is implemented by invoking a special
- ‘setuid’ root program (*note How Change Persona::). As a
- consequence, installing a signal handler for the ‘SIGCHLD’ signal
- (*note Job Control Signals::) may interfere with a call to
- ‘grantpt’.
- The normal return value from ‘grantpt’ is 0; a value of -1 is
- returned in case of failure. The following ‘errno’ error
- conditions are defined for this function:
- ‘EBADF’
- The FILEDES argument is not a valid file descriptor.
- ‘EINVAL’
- The FILEDES argument is not associated with a master
- pseudo-terminal device.
- ‘EACCES’
- The slave pseudo-terminal device corresponding to the master
- associated with FILEDES could not be accessed.
- -- Function: int unlockpt (int FILEDES)
- Preliminary: | MT-Safe | AS-Unsafe heap/bsd | AC-Unsafe mem fd |
- *Note POSIX Safety Concepts::.
- The ‘unlockpt’ function unlocks the slave pseudo-terminal device
- corresponding to the master pseudo-terminal device associated with
- the file descriptor FILEDES. On many systems, the slave can only
- be opened after unlocking, so portable applications should always
- call ‘unlockpt’ before trying to open the slave.
- The normal return value from ‘unlockpt’ is 0; a value of -1 is
- returned in case of failure. The following ‘errno’ error
- conditions are defined for this function:
- ‘EBADF’
- The FILEDES argument is not a valid file descriptor.
- ‘EINVAL’
- The FILEDES argument is not associated with a master
- pseudo-terminal device.
- -- Function: char * ptsname (int FILEDES)
- Preliminary: | MT-Unsafe race:ptsname | AS-Unsafe heap/bsd |
- AC-Unsafe mem fd | *Note POSIX Safety Concepts::.
- If the file descriptor FILEDES is associated with a master
- pseudo-terminal device, the ‘ptsname’ function returns a pointer to
- a statically-allocated, null-terminated string containing the file
- name of the associated slave pseudo-terminal file. This string
- might be overwritten by subsequent calls to ‘ptsname’.
- -- Function: int ptsname_r (int FILEDES, char *BUF, size_t LEN)
- Preliminary: | MT-Safe | AS-Unsafe heap/bsd | AC-Unsafe mem fd |
- *Note POSIX Safety Concepts::.
- The ‘ptsname_r’ function is similar to the ‘ptsname’ function
- except that it places its result into the user-specified buffer
- starting at BUF with length LEN.
- This function was originally a GNU extension, but was added in
- POSIX.1-2024.
- Typical usage of these functions is illustrated by the following
- example:
- int
- open_pty_pair (int *amaster, int *aslave)
- {
- int master, slave;
- char *name;
- master = posix_openpt (O_RDWR | O_NOCTTY);
- if (master < 0)
- return 0;
- if (grantpt (master) < 0 || unlockpt (master) < 0)
- goto close_master;
- name = ptsname (master);
- if (name == NULL)
- goto close_master;
- slave = open (name, O_RDWR);
- if (slave == -1)
- goto close_master;
- *amaster = master;
- *aslave = slave;
- return 1;
- close_slave:
- close (slave);
- close_master:
- close (master);
- return 0;
- }
- File: libc.info, Node: Pseudo-Terminal Pairs, Prev: Allocation, Up: Pseudo-Terminals
- 17.10.2 Opening a Pseudo-Terminal Pair
- --------------------------------------
- These functions, derived from BSD, are available in the separate
- ‘libutil’ library, and declared in ‘pty.h’.
- -- Function: int openpty (int *AMASTER, int *ASLAVE, char *NAME, const
- struct termios *TERMP, const struct winsize *WINP)
- Preliminary: | MT-Safe locale | AS-Unsafe dlopen plugin heap lock |
- AC-Unsafe corrupt lock fd mem | *Note POSIX Safety Concepts::.
- This function allocates and opens a pseudo-terminal pair, returning
- the file descriptor for the master in *AMASTER, and the file
- descriptor for the slave in *ASLAVE. If the argument NAME is not a
- null pointer, the file name of the slave pseudo-terminal device is
- stored in ‘*name’. If TERMP is not a null pointer, the terminal
- attributes of the slave are set to the ones specified in the
- structure that TERMP points to (*note Terminal Modes::). Likewise,
- if WINP is not a null pointer, the screen size of the slave is set
- to the values specified in the structure that WINP points to.
- The normal return value from ‘openpty’ is 0; a value of -1 is
- returned in case of failure. The following ‘errno’ conditions are
- defined for this function:
- ‘ENOENT’
- There are no free pseudo-terminal pairs available.
- *Warning:* Using the ‘openpty’ function with NAME not set to ‘NULL’
- is *very dangerous* because it provides no protection against
- overflowing the string NAME. You should use the ‘ttyname’ function
- on the file descriptor returned in *SLAVE to find out the file name
- of the slave pseudo-terminal device instead.
- -- Function: int forkpty (int *AMASTER, char *NAME, const struct
- termios *TERMP, const struct winsize *WINP)
- Preliminary: | MT-Safe locale | AS-Unsafe dlopen plugin heap lock |
- AC-Unsafe corrupt lock fd mem | *Note POSIX Safety Concepts::.
- This function is similar to the ‘openpty’ function, but in
- addition, forks a new process (*note Creating a Process::) and
- makes the newly opened slave pseudo-terminal device the controlling
- terminal (*note Controlling Terminal::) for the child process.
- If the operation is successful, there are then both parent and
- child processes and both see ‘forkpty’ return, but with different
- values: it returns a value of 0 in the child process and returns
- the child's process ID in the parent process.
- If the allocation of a pseudo-terminal pair or the process creation
- failed, ‘forkpty’ returns a value of -1 in the parent process.
- *Warning:* The ‘forkpty’ function has the same problems with
- respect to the NAME argument as ‘openpty’.
- File: libc.info, Node: Syslog, Next: Mathematics, Prev: Low-Level Terminal Interface, Up: Top
- 18 Syslog
- *********
- This chapter describes facilities for issuing and logging messages of
- system administration interest. This chapter has nothing to do with
- programs issuing messages to their own users or keeping private logs
- (One would typically do that with the facilities described in *note I/O
- on Streams::).
- Most systems have a facility called "Syslog" that allows programs to
- submit messages of interest to system administrators and can be
- configured to pass these messages on in various ways, such as printing
- on the console, mailing to a particular person, or recording in a log
- file for future reference.
- A program uses the facilities in this chapter to submit such
- messages.
- * Menu:
- * Overview of Syslog:: Overview of a system's Syslog facility
- * Submitting Syslog Messages:: Functions to submit messages to Syslog
- File: libc.info, Node: Overview of Syslog, Next: Submitting Syslog Messages, Up: Syslog
- 18.1 Overview of Syslog
- =======================
- System administrators have to deal with lots of different kinds of
- messages from a plethora of subsystems within each system, and usually
- lots of systems as well. For example, an FTP server might report every
- connection it gets. The kernel might report hardware failures on a disk
- drive. A DNS server might report usage statistics at regular intervals.
- Some of these messages need to be brought to a system administrator's
- attention immediately. And it may not be just any system administrator
- - there may be a particular system administrator who deals with a
- particular kind of message. Other messages just need to be recorded for
- future reference if there is a problem. Still others may need to have
- information extracted from them by an automated process that generates
- monthly reports.
- To deal with these messages, most Unix systems have a facility called
- "Syslog." It is generally based on a daemon called "Syslogd" Syslogd
- listens for messages on a Unix domain socket named ‘/dev/log’. Based on
- classification information in the messages and its configuration file
- (usually ‘/etc/syslog.conf’), Syslogd routes them in various ways. Some
- of the popular routings are:
- • Write to the system console
- • Mail to a specific user
- • Write to a log file
- • Pass to another daemon
- • Discard
- Syslogd can also handle messages from other systems. It listens on
- the ‘syslog’ UDP port as well as the local socket for messages.
- Syslog can handle messages from the kernel itself. But the kernel
- doesn't write to ‘/dev/log’; rather, another daemon (sometimes called
- "Klogd") extracts messages from the kernel and passes them on to Syslog
- as any other process would (and it properly identifies them as messages
- from the kernel).
- Syslog can even handle messages that the kernel issued before Syslogd
- or Klogd was running. A Linux kernel, for example, stores startup
- messages in a kernel message ring and they are normally still there when
- Klogd later starts up. Assuming Syslogd is running by the time Klogd
- starts, Klogd then passes everything in the message ring to it.
- In order to classify messages for disposition, Syslog requires any
- process that submits a message to it to provide two pieces of
- classification information with it:
- facility
- This identifies who submitted the message. There are a small
- number of facilities defined. The kernel, the mail subsystem, and
- an FTP server are examples of recognized facilities. For the
- complete list, *Note syslog; vsyslog::. Keep in mind that these
- are essentially arbitrary classifications. "Mail subsystem"
- doesn't have any more meaning than the system administrator gives
- to it.
- priority
- This tells how important the content of the message is. Examples
- of defined priority values are: debug, informational, warning and
- critical. For the complete list, see *note syslog; vsyslog::.
- Except for the fact that the priorities have a defined order, the
- meaning of each of these priorities is entirely determined by the
- system administrator.
- A "facility/priority" is a number that indicates both the facility
- and the priority.
- *Warning:* This terminology is not universal. Some people use
- "level" to refer to the priority and "priority" to refer to the
- combination of facility and priority. A Linux kernel has a concept of a
- message "level," which corresponds both to a Syslog priority and to a
- Syslog facility/priority (It can be both because the facility code for
- the kernel is zero, and that makes priority and facility/priority the
- same value).
- The GNU C Library provides functions to submit messages to Syslog.
- They do it by writing to the ‘/dev/log’ socket. *Note Submitting Syslog
- Messages::.
- The GNU C Library functions only work to submit messages to the
- Syslog facility on the same system. To submit a message to the Syslog
- facility on another system, use the socket I/O functions to write a UDP
- datagram to the ‘syslog’ UDP port on that system. *Note Sockets::.
- File: libc.info, Node: Submitting Syslog Messages, Prev: Overview of Syslog, Up: Syslog
- 18.2 Submitting Syslog Messages
- ===============================
- The GNU C Library provides functions to submit messages to the Syslog
- facility:
- * Menu:
- * openlog:: Open connection to Syslog
- * syslog; vsyslog:: Submit message to Syslog
- * closelog:: Close connection to Syslog
- * setlogmask:: Cause certain messages to be ignored
- * Syslog Example:: Example of all of the above
- These functions only work to submit messages to the Syslog facility
- on the same system. To submit a message to the Syslog facility on
- another system, use the socket I/O functions to write a UDP datagram to
- the ‘syslog’ UDP port on that system. *Note Sockets::.
- File: libc.info, Node: openlog, Next: syslog; vsyslog, Up: Submitting Syslog Messages
- 18.2.1 openlog
- --------------
- The symbols referred to in this section are declared in the file
- ‘syslog.h’.
- -- Function: void openlog (const char *IDENT, int OPTION, int FACILITY)
- Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock fd | *Note
- POSIX Safety Concepts::.
- ‘openlog’ opens or reopens a connection to Syslog in preparation
- for submitting messages.
- IDENT is an arbitrary identification string which future ‘syslog’
- invocations will prefix to each message. This is intended to
- identify the source of the message, and people conventionally set
- it to the name of the program that will submit the messages.
- If IDENT is NULL, or if ‘openlog’ is not called, the default
- identification string used in Syslog messages will be the program
- name, taken from argv[0].
- Please note that the string pointer IDENT will be retained
- internally by the Syslog routines. You must not free the memory
- that IDENT points to. It is also dangerous to pass a reference to
- an automatic variable since leaving the scope would mean ending the
- lifetime of the variable. If you want to change the IDENT string,
- you must call ‘openlog’ again; overwriting the string pointed to by
- IDENT is not thread-safe.
- You can cause the Syslog routines to drop the reference to IDENT
- and go back to the default string (the program name taken from
- argv[0]), by calling ‘closelog’: *Note closelog::.
- In particular, if you are writing code for a shared library that
- might get loaded and then unloaded (e.g. a PAM module), and you
- use ‘openlog’, you must call ‘closelog’ before any point where your
- library might get unloaded, as in this example:
- #include <syslog.h>
- void
- shared_library_function (void)
- {
- openlog ("mylibrary", option, priority);
- syslog (LOG_INFO, "shared library has been invoked");
- closelog ();
- }
- Without the call to ‘closelog’, future invocations of ‘syslog’ by
- the program using the shared library may crash, if the library gets
- unloaded and the memory containing the string ‘"mylibrary"’ becomes
- unmapped. This is a limitation of the BSD syslog interface.
- ‘openlog’ may or may not open the ‘/dev/log’ socket, depending on
- OPTION. If it does, it tries to open it and connect it as a stream
- socket. If that doesn't work, it tries to open it and connect it
- as a datagram socket. The socket has the "Close on Exec"
- attribute, so the kernel will close it if the process performs an
- exec.
- You don't have to use ‘openlog’. If you call ‘syslog’ without
- having called ‘openlog’, ‘syslog’ just opens the connection
- implicitly and uses defaults for the information in IDENT and
- OPTIONS.
- OPTIONS is a bit string, with the bits as defined by the following
- single bit masks:
- ‘LOG_PERROR’
- If on, ‘openlog’ sets up the connection so that any ‘syslog’
- on this connection writes its message to the calling process'
- Standard Error stream in addition to submitting it to Syslog.
- If off, ‘syslog’ does not write the message to Standard Error.
- ‘LOG_CONS’
- If on, ‘openlog’ sets up the connection so that a ‘syslog’ on
- this connection that fails to submit a message to Syslog
- writes the message instead to system console. If off,
- ‘syslog’ does not write to the system console (but of course
- Syslog may write messages it receives to the console).
- ‘LOG_PID’
- When on, ‘openlog’ sets up the connection so that a ‘syslog’
- on this connection inserts the calling process' Process ID
- (PID) into the message. When off, ‘openlog’ does not insert
- the PID.
- ‘LOG_NDELAY’
- When on, ‘openlog’ opens and connects the ‘/dev/log’ socket.
- When off, a future ‘syslog’ call must open and connect the
- socket.
- *Portability note:* In early systems, the sense of this bit
- was exactly the opposite.
- ‘LOG_ODELAY’
- This bit does nothing. It exists for backward compatibility.
- If any other bit in OPTIONS is on, the result is undefined.
- FACILITY is the default facility code for this connection. A
- ‘syslog’ on this connection that specifies default facility causes
- this facility to be associated with the message. See ‘syslog’ for
- possible values. A value of zero means the default, which is
- ‘LOG_USER’.
- If a Syslog connection is already open when you call ‘openlog’,
- ‘openlog’ "reopens" the connection. Reopening is like opening
- except that if you specify zero for the default facility code, the
- default facility code simply remains unchanged and if you specify
- LOG_NDELAY and the socket is already open and connected, ‘openlog’
- just leaves it that way.
- File: libc.info, Node: syslog; vsyslog, Next: closelog, Prev: openlog, Up: Submitting Syslog Messages
- 18.2.2 syslog, vsyslog
- ----------------------
- The symbols referred to in this section are declared in the file
- ‘syslog.h’.
- -- Function: void syslog (int FACILITY_PRIORITY, const char *FORMAT,
- ...)
- Preliminary: | MT-Safe env locale | AS-Unsafe corrupt heap lock
- dlopen | AC-Unsafe corrupt lock mem fd | *Note POSIX Safety
- Concepts::.
- ‘syslog’ submits a message to the Syslog facility. It does this by
- writing to the Unix domain socket ‘/dev/log’.
- ‘syslog’ submits the message with the facility and priority
- indicated by FACILITY_PRIORITY. The macro ‘LOG_MAKEPRI’ generates
- a facility/priority from a facility and a priority, as in the
- following example:
- LOG_MAKEPRI(LOG_USER, LOG_WARNING)
- The possible values for the facility code are (macros):
- ‘LOG_USER’
- A miscellaneous user process
- ‘LOG_MAIL’
- Mail
- ‘LOG_DAEMON’
- A miscellaneous system daemon
- ‘LOG_AUTH’
- Security (authorization)
- ‘LOG_SYSLOG’
- Syslog
- ‘LOG_LPR’
- Central printer
- ‘LOG_NEWS’
- Network news (e.g. Usenet)
- ‘LOG_UUCP’
- UUCP
- ‘LOG_CRON’
- Cron and At
- ‘LOG_AUTHPRIV’
- Private security (authorization)
- ‘LOG_FTP’
- Ftp server
- ‘LOG_LOCAL0’
- Locally defined
- ‘LOG_LOCAL1’
- Locally defined
- ‘LOG_LOCAL2’
- Locally defined
- ‘LOG_LOCAL3’
- Locally defined
- ‘LOG_LOCAL4’
- Locally defined
- ‘LOG_LOCAL5’
- Locally defined
- ‘LOG_LOCAL6’
- Locally defined
- ‘LOG_LOCAL7’
- Locally defined
- Results are undefined if the facility code is anything else.
- *NB:* ‘syslog’ recognizes one other facility code: that of the
- kernel. But you can't specify that facility code with these
- functions. If you try, it looks the same to ‘syslog’ as if you are
- requesting the default facility. But you wouldn't want to anyway,
- because any program that uses the GNU C Library is not the kernel.
- You can use just a priority code as FACILITY_PRIORITY. In that
- case, ‘syslog’ assumes the default facility established when the
- Syslog connection was opened. *Note Syslog Example::.
- The possible values for the priority code are (macros):
- ‘LOG_EMERG’
- The message says the system is unusable.
- ‘LOG_ALERT’
- Action on the message must be taken immediately.
- ‘LOG_CRIT’
- The message states a critical condition.
- ‘LOG_ERR’
- The message describes an error.
- ‘LOG_WARNING’
- The message is a warning.
- ‘LOG_NOTICE’
- The message describes a normal but important event.
- ‘LOG_INFO’
- The message is purely informational.
- ‘LOG_DEBUG’
- The message is only for debugging purposes.
- Results are undefined if the priority code is anything else.
- If the process does not presently have a Syslog connection open
- (i.e., it did not call ‘openlog’), ‘syslog’ implicitly opens the
- connection the same as ‘openlog’ would, with the following defaults
- for information that would otherwise be included in an ‘openlog’
- call: The default identification string is the program name. The
- default default facility is ‘LOG_USER’. The default for all the
- connection options in OPTIONS is as if those bits were off.
- ‘syslog’ leaves the Syslog connection open.
- If the ‘/dev/log’ socket is not open and connected, ‘syslog’ opens
- and connects it, the same as ‘openlog’ with the ‘LOG_NDELAY’ option
- would.
- ‘syslog’ leaves ‘/dev/log’ open and connected unless its attempt to
- send the message failed, in which case ‘syslog’ closes it (with the
- hope that a future implicit open will restore the Syslog connection
- to a usable state).
- Example:
- #include <syslog.h>
- syslog (LOG_MAKEPRI(LOG_LOCAL1, LOG_ERROR),
- "Unable to make network connection to %s. Error=%m", host);
- -- Function: void vsyslog (int FACILITY_PRIORITY, const char *FORMAT,
- va_list ARGLIST)
- Preliminary: | MT-Safe env locale | AS-Unsafe corrupt heap lock
- dlopen | AC-Unsafe corrupt lock mem fd | *Note POSIX Safety
- Concepts::.
- This is functionally identical to ‘syslog’, with the BSD style
- variable length argument.
- File: libc.info, Node: closelog, Next: setlogmask, Prev: syslog; vsyslog, Up: Submitting Syslog Messages
- 18.2.3 closelog
- ---------------
- The symbols referred to in this section are declared in the file
- ‘syslog.h’.
- -- Function: void closelog (void)
- Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock fd | *Note
- POSIX Safety Concepts::.
- ‘closelog’ closes the current Syslog connection, if there is one.
- This includes closing the ‘/dev/log’ socket, if it is open.
- ‘closelog’ also sets the identification string for Syslog messages
- back to the default, if ‘openlog’ was called with a non-NULL
- argument to IDENT. The default identification string is the
- program name taken from argv[0].
- If you are writing shared library code that uses ‘openlog’ to
- generate custom syslog output, you should use ‘closelog’ to drop
- the GNU C Library's internal reference to the IDENT pointer when
- you are done. Please read the section on ‘openlog’ for more
- information: *Note openlog::.
- ‘closelog’ does not flush any buffers. You do not have to call
- ‘closelog’ before re-opening a Syslog connection with ‘openlog’.
- Syslog connections are automatically closed on exec or exit.
- File: libc.info, Node: setlogmask, Next: Syslog Example, Prev: closelog, Up: Submitting Syslog Messages
- 18.2.4 setlogmask
- -----------------
- The symbols referred to in this section are declared in the file
- ‘syslog.h’.
- -- Function: int setlogmask (int MASK)
- Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
- POSIX Safety Concepts::.
- ‘setlogmask’ sets a mask (the "logmask") that determines which
- future ‘syslog’ calls shall be ignored. If a program has not
- called ‘setlogmask’, ‘syslog’ doesn't ignore any calls. You can
- use ‘setlogmask’ to specify that messages of particular priorities
- shall be ignored in the future.
- A ‘setlogmask’ call overrides any previous ‘setlogmask’ call.
- Note that the logmask exists entirely independently of opening and
- closing of Syslog connections.
- Setting the logmask has a similar effect to, but is not the same
- as, configuring Syslog. The Syslog configuration may cause Syslog
- to discard certain messages it receives, but the logmask causes
- certain messages never to get submitted to Syslog in the first
- place.
- MASK is a bit string with one bit corresponding to each of the
- possible message priorities. If the bit is on, ‘syslog’ handles
- messages of that priority normally. If it is off, ‘syslog’
- discards messages of that priority. Use the message priority
- macros described in *note syslog; vsyslog:: and the ‘LOG_MASK’ to
- construct an appropriate MASK value, as in this example:
- LOG_MASK(LOG_EMERG) | LOG_MASK(LOG_ERROR)
- or
- ~(LOG_MASK(LOG_INFO))
- There is also a ‘LOG_UPTO’ macro, which generates a mask with the
- bits on for a certain priority and all priorities above it:
- LOG_UPTO(LOG_ERROR)
- The unfortunate naming of the macro is due to the fact that
- internally, higher numbers are used for lower message priorities.
- File: libc.info, Node: Syslog Example, Prev: setlogmask, Up: Submitting Syslog Messages
- 18.2.5 Syslog Example
- ---------------------
- Here is an example of ‘openlog’, ‘syslog’, and ‘closelog’:
- This example sets the logmask so that debug and informational
- messages get discarded without ever reaching Syslog. So the second
- ‘syslog’ in the example does nothing.
- #include <syslog.h>
- setlogmask (LOG_UPTO (LOG_NOTICE));
- openlog ("exampleprog", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
- syslog (LOG_NOTICE, "Program started by User %d", getuid ());
- syslog (LOG_INFO, "A tree falls in a forest");
- closelog ();
- File: libc.info, Node: Mathematics, Next: Arithmetic, Prev: Syslog, Up: Top
- 19 Mathematics
- **************
- This chapter contains information about functions for performing
- mathematical computations, such as trigonometric functions. Most of
- these functions have prototypes declared in the header file ‘math.h’.
- The complex-valued functions are defined in ‘complex.h’.
- All mathematical functions which take a floating-point argument have
- three variants, one each for ‘double’, ‘float’, and ‘long double’
- arguments. The ‘double’ versions are mostly defined in ISO C89. The
- ‘float’ and ‘long double’ versions are from the numeric extensions to C
- included in ISO C99.
- Which of the three versions of a function should be used depends on
- the situation. For most calculations, the ‘float’ functions are the
- fastest. On the other hand, the ‘long double’ functions have the most
- precision and exponent range. ‘double’ is somewhere in between. It is
- usually wise to pick the smallest type that can accommodate your data.
- On some machines ‘long double’ has no more precision or exponent range
- than ‘double’, though the types remain distinct for type checking.
- The GNU C Library also provides ‘_FloatN’ and ‘_FloatNx’ types.
- These types are defined in ISO/IEC TS 18661-3, which extends ISO C and
- defines floating-point types that are not machine-dependent. When such
- a type, such as ‘_Float128’, is supported by the GNU C Library, extra
- variants for most of the mathematical functions provided for ‘double’,
- ‘float’, and ‘long double’ are also provided for the supported type.
- Throughout this manual, the ‘_FloatN’ and ‘_FloatNx’ variants of these
- functions are described along with the ‘double’, ‘float’, and ‘long
- double’ variants and they come from ISO/IEC TS 18661-3, unless
- explicitly stated otherwise.
- Support for ‘_FloatN’ or ‘_FloatNx’ types is provided for ‘_Float32’,
- ‘_Float64’ and ‘_Float32x’ on all platforms. It is also provided for
- ‘_Float128’ and ‘_Float64x’ on powerpc64le (PowerPC 64-bits
- little-endian), x86_64, x86, aarch64, alpha, loongarch, mips64, riscv,
- s390 and sparc.
- * Menu:
- * Mathematical Constants:: Precise numeric values for often-used
- constants.
- * Trig Functions:: Sine, cosine, tangent, and friends.
- * Inverse Trig Functions:: Arcsine, arccosine, etc.
- * Exponents and Logarithms:: Also pow and sqrt.
- * Hyperbolic Functions:: sinh, cosh, tanh, etc.
- * Special Functions:: Bessel, gamma, erf.
- * Errors in Math Functions:: Remarks in Errors in Math Functions.
- * Pseudo-Random Numbers:: Functions for generating pseudo-random
- numbers.
- * FP Function Optimizations:: Fast code or small code.
- File: libc.info, Node: Mathematical Constants, Next: Trig Functions, Up: Mathematics
- 19.1 Predefined Mathematical Constants
- ======================================
- The header ‘math.h’ defines several useful mathematical constants. All
- values are defined as preprocessor macros starting with ‘M_’. The
- values provided are:
- ‘M_E’
- The base of natural logarithms.
- ‘M_LOG2E’
- The logarithm to base ‘2’ of ‘M_E’.
- ‘M_LOG10E’
- The logarithm to base ‘10’ of ‘M_E’.
- ‘M_LN2’
- The natural logarithm of ‘2’.
- ‘M_LN10’
- The natural logarithm of ‘10’.
- ‘M_PI’
- Pi, the ratio of a circle's circumference to its diameter.
- ‘M_PI_2’
- Pi divided by two.
- ‘M_PI_4’
- Pi divided by four.
- ‘M_1_PI’
- The reciprocal of pi (1/pi)
- ‘M_2_PI’
- Two times the reciprocal of pi.
- ‘M_2_SQRTPI’
- Two times the reciprocal of the square root of pi.
- ‘M_SQRT2’
- The square root of two.
- ‘M_SQRT1_2’
- The reciprocal of the square root of two (also the square root of
- 1/2).
- These constants come from the Unix98 standard and were also available
- in 4.4BSD; therefore they are only defined if ‘_XOPEN_SOURCE=500’, or a
- more general feature select macro, is defined. The default set of
- features includes these constants. *Note Feature Test Macros::.
- All values are of type ‘double’. As an extension, the GNU C Library
- also defines these constants with type ‘long double’ and ‘float’. The
- ‘long double’ macros have a lowercase ‘l’ while the ‘float’ macros have
- a lowercase ‘f’ appended to their names: ‘M_El’, ‘M_PIl’, and so forth.
- These are only available if ‘_GNU_SOURCE’ is defined.
- Likewise, the GNU C Library also defines these constants with the
- types ‘_FloatN’ and ‘_FloatNx’ for the machines that have support for
- such types enabled (*note Mathematics::) and if ‘_GNU_SOURCE’ is
- defined. When available, the macros names are appended with ‘fN’ or
- ‘fNx’, such as ‘f128’ for the type ‘_Float128’.
- _Note:_ Some programs use a constant named ‘PI’ which has the same
- value as ‘M_PI’. This constant is not standard; it may have appeared in
- some old AT&T headers, and is mentioned in Stroustrup's book on C++. It
- infringes on the user's name space, so the GNU C Library does not define
- it. Fixing programs written to expect it is simple: replace ‘PI’ with
- ‘M_PI’ throughout, or put ‘-DPI=M_PI’ on the compiler command line.
- File: libc.info, Node: Trig Functions, Next: Inverse Trig Functions, Prev: Mathematical Constants, Up: Mathematics
- 19.2 Trigonometric Functions
- ============================
- These are the familiar ‘sin’, ‘cos’, and ‘tan’ functions. The arguments
- to all of these functions are in units of radians; recall that pi
- radians equals 180 degrees.
- The math library normally defines ‘M_PI’ to a ‘double’ approximation
- of pi. If strict ISO and/or POSIX compliance are requested this
- constant is not defined, but you can easily define it yourself:
- #define M_PI 3.14159265358979323846264338327
- You can also compute the value of pi with the expression ‘acos (-1.0)’.
- -- Function: double sin (double X)
- -- Function: float sinf (float X)
- -- Function: long double sinl (long double X)
- -- Function: _FloatN sinfN (_FloatN X)
- -- Function: _FloatNx sinfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the sine of X, where X is given in radians.
- The return value is in the range ‘-1’ to ‘1’.
- -- Function: double cos (double X)
- -- Function: float cosf (float X)
- -- Function: long double cosl (long double X)
- -- Function: _FloatN cosfN (_FloatN X)
- -- Function: _FloatNx cosfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the cosine of X, where X is given in
- radians. The return value is in the range ‘-1’ to ‘1’.
- -- Function: double tan (double X)
- -- Function: float tanf (float X)
- -- Function: long double tanl (long double X)
- -- Function: _FloatN tanfN (_FloatN X)
- -- Function: _FloatNx tanfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the tangent of X, where X is given in
- radians.
- Mathematically, the tangent function has singularities at odd
- multiples of pi/2. If the argument X is too close to one of these
- singularities, ‘tan’ will signal overflow.
- In many applications where ‘sin’ and ‘cos’ are used, the sine and
- cosine of the same angle are needed at the same time. It is more
- efficient to compute them simultaneously, so the library provides a
- function to do that.
- -- Function: void sincos (double X, double *SINX, double *COSX)
- -- Function: void sincosf (float X, float *SINX, float *COSX)
- -- Function: void sincosl (long double X, long double *SINX, long
- double *COSX)
- -- Function: _FloatN sincosfN (_FloatN X, _FloatN *SINX, _FloatN *COSX)
- -- Function: _FloatNx sincosfNx (_FloatNx X, _FloatNx *SINX, _FloatNx
- *COSX)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the sine of X in ‘*SINX’ and the cosine of X
- in ‘*COSX’, where X is given in radians. Both values, ‘*SINX’ and
- ‘*COSX’, are in the range of ‘-1’ to ‘1’.
- All these functions, including the ‘_FloatN’ and ‘_FloatNx’
- variants, are GNU extensions. Portable programs should be prepared
- to cope with their absence.
- -- Function: double sinpi (double X)
- -- Function: float sinpif (float X)
- -- Function: long double sinpil (long double X)
- -- Function: _FloatN sinpifN (_FloatN X)
- -- Function: _FloatNx sinpifNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the sine of pi multiplied by X. The return
- value is in the range ‘-1’ to ‘1’.
- The ‘sinpi’ functions are from TS 18661-4:2015.
- -- Function: double cospi (double X)
- -- Function: float cospif (float X)
- -- Function: long double cospil (long double X)
- -- Function: _FloatN cospifN (_FloatN X)
- -- Function: _FloatNx cospifNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the cosine of pi multiplied by X. The
- return value is in the range ‘-1’ to ‘1’.
- The ‘cospi’ functions are from TS 18661-4:2015.
- -- Function: double tanpi (double X)
- -- Function: float tanpif (float X)
- -- Function: long double tanpil (long double X)
- -- Function: _FloatN tanpifN (_FloatN X)
- -- Function: _FloatNx tanpifNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the tangent of pi multiplied by X.
- The ‘tanpi’ functions are from TS 18661-4:2015.
- ISO C99 defines variants of the trig functions which work on complex
- numbers. The GNU C Library provides these functions, but they are only
- useful if your compiler supports the new complex types defined by the
- standard. (As of this writing GCC supports complex numbers, but there
- are bugs in the implementation.)
- -- Function: complex double csin (complex double Z)
- -- Function: complex float csinf (complex float Z)
- -- Function: complex long double csinl (complex long double Z)
- -- Function: complex _FloatN csinfN (complex _FloatN Z)
- -- Function: complex _FloatNx csinfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the complex sine of Z. The mathematical
- definition of the complex sine is
- sin (z) = 1/(2*i) * (exp (z*i) - exp (-z*i)).
- -- Function: complex double ccos (complex double Z)
- -- Function: complex float ccosf (complex float Z)
- -- Function: complex long double ccosl (complex long double Z)
- -- Function: complex _FloatN ccosfN (complex _FloatN Z)
- -- Function: complex _FloatNx ccosfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the complex cosine of Z. The mathematical
- definition of the complex cosine is
- cos (z) = 1/2 * (exp (z*i) + exp (-z*i))
- -- Function: complex double ctan (complex double Z)
- -- Function: complex float ctanf (complex float Z)
- -- Function: complex long double ctanl (complex long double Z)
- -- Function: complex _FloatN ctanfN (complex _FloatN Z)
- -- Function: complex _FloatNx ctanfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the complex tangent of Z. The mathematical
- definition of the complex tangent is
- tan (z) = -i * (exp (z*i) - exp (-z*i)) / (exp (z*i) + exp (-z*i))
- The complex tangent has poles at pi/2 + 2n, where n is an integer.
- ‘ctan’ may signal overflow if Z is too close to a pole.
- File: libc.info, Node: Inverse Trig Functions, Next: Exponents and Logarithms, Prev: Trig Functions, Up: Mathematics
- 19.3 Inverse Trigonometric Functions
- ====================================
- These are the usual arcsine, arccosine and arctangent functions, which
- are the inverses of the sine, cosine and tangent functions respectively.
- -- Function: double asin (double X)
- -- Function: float asinf (float X)
- -- Function: long double asinl (long double X)
- -- Function: _FloatN asinfN (_FloatN X)
- -- Function: _FloatNx asinfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions compute the arcsine of X--that is, the value whose
- sine is X. The value is in units of radians. Mathematically,
- there are infinitely many such values; the one actually returned is
- the one between ‘-pi/2’ and ‘pi/2’ (inclusive).
- The arcsine function is defined mathematically only over the domain
- ‘-1’ to ‘1’. If X is outside the domain, ‘asin’ signals a domain
- error.
- -- Function: double acos (double X)
- -- Function: float acosf (float X)
- -- Function: long double acosl (long double X)
- -- Function: _FloatN acosfN (_FloatN X)
- -- Function: _FloatNx acosfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions compute the arccosine of X--that is, the value
- whose cosine is X. The value is in units of radians.
- Mathematically, there are infinitely many such values; the one
- actually returned is the one between ‘0’ and ‘pi’ (inclusive).
- The arccosine function is defined mathematically only over the
- domain ‘-1’ to ‘1’. If X is outside the domain, ‘acos’ signals a
- domain error.
- -- Function: double atan (double X)
- -- Function: float atanf (float X)
- -- Function: long double atanl (long double X)
- -- Function: _FloatN atanfN (_FloatN X)
- -- Function: _FloatNx atanfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions compute the arctangent of X--that is, the value
- whose tangent is X. The value is in units of radians.
- Mathematically, there are infinitely many such values; the one
- actually returned is the one between ‘-pi/2’ and ‘pi/2’
- (inclusive).
- -- Function: double atan2 (double Y, double X)
- -- Function: float atan2f (float Y, float X)
- -- Function: long double atan2l (long double Y, long double X)
- -- Function: _FloatN atan2fN (_FloatN Y, _FloatN X)
- -- Function: _FloatNx atan2fNx (_FloatNx Y, _FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function computes the arctangent of Y/X, but the signs of both
- arguments are used to determine the quadrant of the result, and X
- is permitted to be zero. The return value is given in radians and
- is in the range ‘-pi’ to ‘pi’, inclusive.
- If X and Y are coordinates of a point in the plane, ‘atan2’ returns
- the signed angle between the line from the origin to that point and
- the x-axis. Thus, ‘atan2’ is useful for converting Cartesian
- coordinates to polar coordinates. (To compute the radial
- coordinate, use ‘hypot’; see *note Exponents and Logarithms::.)
- If both X and Y are zero, ‘atan2’ returns zero.
- -- Function: double asinpi (double X)
- -- Function: float asinpif (float X)
- -- Function: long double asinpil (long double X)
- -- Function: _FloatN asinpifN (_FloatN X)
- -- Function: _FloatNx asinpifNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions compute the arcsine of X, divided by pi. The
- result is in the interval between ‘-0.5’ and ‘0.5’ (inclusive).
- The arcsine function is defined mathematically only over the domain
- ‘-1’ to ‘1’. If X is outside the domain, ‘asinpi’ signals a domain
- error.
- The ‘asinpi’ functions are from TS 18661-4:2015.
- -- Function: double acospi (double X)
- -- Function: float acospif (float X)
- -- Function: long double acospil (long double X)
- -- Function: _FloatN acospifN (_FloatN X)
- -- Function: _FloatNx acospifNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions compute the arccosine of X, divided by pi. The
- result is in the interval between ‘0’ and ‘1’ (inclusive).
- The arccosine function is defined mathematically only over the
- domain ‘-1’ to ‘1’. If X is outside the domain, ‘acospi’ signals a
- domain error.
- The ‘acospi’ functions are from TS 18661-4:2015.
- -- Function: double atanpi (double X)
- -- Function: float atanpif (float X)
- -- Function: long double atanpil (long double X)
- -- Function: _FloatN atanpifN (_FloatN X)
- -- Function: _FloatNx atanpifNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions compute the arctangent of X, divided by pi. The
- result is in the interval between ‘-0.5’ and ‘0.5’ (inclusive).
- The ‘atanpi’ functions are from TS 18661-4:2015.
- -- Function: double atan2pi (double Y, double X)
- -- Function: float atan2pif (float Y, float X)
- -- Function: long double atan2pil (long double Y, long double X)
- -- Function: _FloatN atan2pifN (_FloatN Y, _FloatN X)
- -- Function: _FloatNx atan2pifNx (_FloatNx Y, _FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These function computes the arctangent of Y/X, divided by pi, with
- the signs of both arguments used to determine the quadrant of the
- result, as for ‘atan2’.
- The ‘atan2pi’ functions are from TS 18661-4:2015.
- ISO C99 defines complex versions of the inverse trig functions.
- -- Function: complex double casin (complex double Z)
- -- Function: complex float casinf (complex float Z)
- -- Function: complex long double casinl (complex long double Z)
- -- Function: complex _FloatN casinfN (complex _FloatN Z)
- -- Function: complex _FloatNx casinfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions compute the complex arcsine of Z--that is, the
- value whose sine is Z. The value returned is in radians.
- Unlike the real-valued functions, ‘casin’ is defined for all values
- of Z.
- -- Function: complex double cacos (complex double Z)
- -- Function: complex float cacosf (complex float Z)
- -- Function: complex long double cacosl (complex long double Z)
- -- Function: complex _FloatN cacosfN (complex _FloatN Z)
- -- Function: complex _FloatNx cacosfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions compute the complex arccosine of Z--that is, the
- value whose cosine is Z. The value returned is in radians.
- Unlike the real-valued functions, ‘cacos’ is defined for all values
- of Z.
- -- Function: complex double catan (complex double Z)
- -- Function: complex float catanf (complex float Z)
- -- Function: complex long double catanl (complex long double Z)
- -- Function: complex _FloatN catanfN (complex _FloatN Z)
- -- Function: complex _FloatNx catanfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions compute the complex arctangent of Z--that is, the
- value whose tangent is Z. The value is in units of radians.
- File: libc.info, Node: Exponents and Logarithms, Next: Hyperbolic Functions, Prev: Inverse Trig Functions, Up: Mathematics
- 19.4 Exponentiation and Logarithms
- ==================================
- -- Function: double exp (double X)
- -- Function: float expf (float X)
- -- Function: long double expl (long double X)
- -- Function: _FloatN expfN (_FloatN X)
- -- Function: _FloatNx expfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions compute ‘e’ (the base of natural logarithms) raised
- to the power X.
- If the magnitude of the result is too large to be representable,
- ‘exp’ signals overflow.
- -- Function: double exp2 (double X)
- -- Function: float exp2f (float X)
- -- Function: long double exp2l (long double X)
- -- Function: _FloatN exp2fN (_FloatN X)
- -- Function: _FloatNx exp2fNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions compute ‘2’ raised to the power X. Mathematically,
- ‘exp2 (x)’ is the same as ‘exp (x * log (2))’.
- -- Function: double exp10 (double X)
- -- Function: float exp10f (float X)
- -- Function: long double exp10l (long double X)
- -- Function: _FloatN exp10fN (_FloatN X)
- -- Function: _FloatNx exp10fNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions compute ‘10’ raised to the power X.
- Mathematically, ‘exp10 (x)’ is the same as ‘exp (x * log (10))’.
- The ‘exp10’ functions are from TS 18661-4:2015.
- -- Function: double log (double X)
- -- Function: float logf (float X)
- -- Function: long double logl (long double X)
- -- Function: _FloatN logfN (_FloatN X)
- -- Function: _FloatNx logfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions compute the natural logarithm of X. ‘exp (log
- (X))’ equals X, exactly in mathematics and approximately in C.
- If X is negative, ‘log’ signals a domain error. If X is zero, it
- returns negative infinity; if X is too close to zero, it may signal
- overflow.
- -- Function: double log10 (double X)
- -- Function: float log10f (float X)
- -- Function: long double log10l (long double X)
- -- Function: _FloatN log10fN (_FloatN X)
- -- Function: _FloatNx log10fNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the base-10 logarithm of X. ‘log10 (X)’
- equals ‘log (X) / log (10)’.
- -- Function: double log2 (double X)
- -- Function: float log2f (float X)
- -- Function: long double log2l (long double X)
- -- Function: _FloatN log2fN (_FloatN X)
- -- Function: _FloatNx log2fNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the base-2 logarithm of X. ‘log2 (X)’
- equals ‘log (X) / log (2)’.
- -- Function: double logb (double X)
- -- Function: float logbf (float X)
- -- Function: long double logbl (long double X)
- -- Function: _FloatN logbfN (_FloatN X)
- -- Function: _FloatNx logbfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions extract the exponent of X and return it as a
- floating-point value. If ‘FLT_RADIX’ is two, ‘logb (x)’ is similar
- to ‘floor (log2 (fabs (x)))’, except that the latter may give an
- incorrect integer due to intermediate rounding.
- If X is de-normalized, ‘logb’ returns the exponent X would have if
- it were normalized. If X is infinity (positive or negative),
- ‘logb’ returns oo. If X is zero, ‘logb’ returns oo. It does not
- signal.
- -- Function: int ilogb (double X)
- -- Function: int ilogbf (float X)
- -- Function: int ilogbl (long double X)
- -- Function: int ilogbfN (_FloatN X)
- -- Function: int ilogbfNx (_FloatNx X)
- -- Function: long int llogb (double X)
- -- Function: long int llogbf (float X)
- -- Function: long int llogbl (long double X)
- -- Function: long int llogbfN (_FloatN X)
- -- Function: long int llogbfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions are equivalent to the corresponding ‘logb’
- functions except that they return signed integer values. The
- ‘ilogb’, ‘ilogbf’, and ‘ilogbl’ functions are from ISO C99; the
- ‘llogb’, ‘llogbf’, ‘llogbl’ functions are from TS 18661-1:2014; the
- ‘ilogbfN’, ‘ilogbfNx’, ‘llogbfN’, and ‘llogbfNx’ functions are from
- TS 18661-3:2015.
- Since integers cannot represent infinity and NaN, ‘ilogb’ instead
- returns an integer that can't be the exponent of a normal floating-point
- number. ‘math.h’ defines constants so you can check for this.
- -- Macro: int FP_ILOGB0
- ‘ilogb’ returns this value if its argument is ‘0’. The numeric
- value is either ‘INT_MIN’ or ‘-INT_MAX’.
- This macro is defined in ISO C99.
- -- Macro: long int FP_LLOGB0
- ‘llogb’ returns this value if its argument is ‘0’. The numeric
- value is either ‘LONG_MIN’ or ‘-LONG_MAX’.
- This macro is defined in TS 18661-1:2014.
- -- Macro: int FP_ILOGBNAN
- ‘ilogb’ returns this value if its argument is ‘NaN’. The numeric
- value is either ‘INT_MIN’ or ‘INT_MAX’.
- This macro is defined in ISO C99.
- -- Macro: long int FP_LLOGBNAN
- ‘llogb’ returns this value if its argument is ‘NaN’. The numeric
- value is either ‘LONG_MIN’ or ‘LONG_MAX’.
- This macro is defined in TS 18661-1:2014.
- These values are system specific. They might even be the same. The
- proper way to test the result of ‘ilogb’ is as follows:
- i = ilogb (f);
- if (i == FP_ILOGB0 || i == FP_ILOGBNAN)
- {
- if (isnan (f))
- {
- /* Handle NaN. */
- }
- else if (f == 0.0)
- {
- /* Handle 0.0. */
- }
- else
- {
- /* Some other value with large exponent,
- perhaps +Inf. */
- }
- }
- -- Function: double pow (double BASE, double POWER)
- -- Function: float powf (float BASE, float POWER)
- -- Function: long double powl (long double BASE, long double POWER)
- -- Function: _FloatN powfN (_FloatN BASE, _FloatN POWER)
- -- Function: _FloatNx powfNx (_FloatNx BASE, _FloatNx POWER)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These are general exponentiation functions, returning BASE raised
- to POWER.
- Mathematically, ‘pow’ would return a complex number when BASE is
- negative and POWER is not an integral value. ‘pow’ can't do that,
- so instead it signals a domain error. ‘pow’ may also underflow or
- overflow the destination type.
- -- Function: double powr (double BASE, double POWER)
- -- Function: float powrf (float BASE, float POWER)
- -- Function: long double powrl (long double BASE, long double POWER)
- -- Function: _FloatN powrfN (_FloatN BASE, _FloatN POWER)
- -- Function: _FloatNx powrfNx (_FloatNx BASE, _FloatNx POWER)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These return BASE raised to POWER, but with special cases based on
- ‘exp (power * log (base))’. For example, if BASE is negative, the
- ‘powr’ functions always signal a domain error, but this is valid
- for ‘pow’ if POWER is an integer.
- The ‘powr’ functions are from TS 18661-4:2015.
- -- Function: double pown (double BASE, long long int POWER)
- -- Function: float pownf (float BASE, long long int POWER)
- -- Function: long double pownl (long double BASE, long long int POWER)
- -- Function: _FloatN pownfN (_FloatN BASE, long long int POWER)
- -- Function: _FloatNx pownfNx (_FloatNx BASE, long long int POWER)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These return BASE raised to POWER (an integer).
- The ‘pown’ functions are from TS 18661-4:2015 (which used
- ‘intmax_t’ as the type of POWER; the type changed to ‘long long
- int’ in C23).
- -- Function: double compoundn (double X, long long int POWER)
- -- Function: float compoundnf (float X, long long int POWER)
- -- Function: long double compoundnl (long double X, long long int
- POWER)
- -- Function: _FloatN compoundnfN (_FloatN X, long long int POWER)
- -- Function: _FloatNx compoundnfNx (_FloatNx X, long long int POWER)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These return ‘1 + X’ raised to POWER (an integer). If X is less
- than −1, ‘compoundn’ signals a domain error.
- The ‘compoundn’ functions are from TS 18661-4:2015 (which used
- ‘intmax_t’ as the type of POWER; the type changed to ‘long long
- int’ in C23).
- -- Function: double sqrt (double X)
- -- Function: float sqrtf (float X)
- -- Function: long double sqrtl (long double X)
- -- Function: _FloatN sqrtfN (_FloatN X)
- -- Function: _FloatNx sqrtfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the nonnegative square root of X.
- If X is negative, ‘sqrt’ signals a domain error. Mathematically,
- it should return a complex number.
- -- Function: double rsqrt (double X)
- -- Function: float rsqrtf (float X)
- -- Function: long double rsqrtl (long double X)
- -- Function: _FloatN rsqrtfN (_FloatN X)
- -- Function: _FloatNx rsqrtfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the reciprocal of the nonnegative square
- root of X. If X is negative, ‘rsqrt’ signals a domain error.
- The ‘rsqrt’ functions are from TS 18661-4:2015.
- -- Function: double cbrt (double X)
- -- Function: float cbrtf (float X)
- -- Function: long double cbrtl (long double X)
- -- Function: _FloatN cbrtfN (_FloatN X)
- -- Function: _FloatNx cbrtfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the cube root of X. They cannot fail; every
- representable real value has a real cube root, and rounding it to a
- representable value never causes overflow nor underflow.
- -- Function: double hypot (double X, double Y)
- -- Function: float hypotf (float X, float Y)
- -- Function: long double hypotl (long double X, long double Y)
- -- Function: _FloatN hypotfN (_FloatN X, _FloatN Y)
- -- Function: _FloatNx hypotfNx (_FloatNx X, _FloatNx Y)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return ‘sqrt (X*X + Y*Y)’. This is the length of
- the hypotenuse of a right triangle with sides of length X and Y, or
- the distance of the point (X, Y) from the origin. Using this
- function instead of the direct formula is wise, since the error is
- much smaller. See also the function ‘cabs’ in *note Absolute
- Value::.
- -- Function: double rootn (double X, long long int N)
- -- Function: float rootnf (float X, long long int N)
- -- Function: long double rootnl (long double X, long long int N)
- -- Function: _FloatN rootnfN (_FloatN X, long long int N)
- -- Function: _FloatNx rootnfNx (_FloatNx X, long long int N)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These return the Nth root of X. If N is zero, or if X is negative
- and N is even, ‘rootn’ signals a domain error.
- The ‘rootn’ functions are from TS 18661-4:2015 (which used
- ‘intmax_t’ as the type of N; the type changed to ‘long long int’ in
- C23).
- -- Function: double expm1 (double X)
- -- Function: float expm1f (float X)
- -- Function: long double expm1l (long double X)
- -- Function: _FloatN expm1fN (_FloatN X)
- -- Function: _FloatNx expm1fNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return a value equivalent to ‘exp (X) - 1’. They
- are computed in a way that is accurate even if X is near zero--a
- case where ‘exp (X) - 1’ would be inaccurate owing to subtraction
- of two numbers that are nearly equal.
- -- Function: double exp2m1 (double X)
- -- Function: float exp2m1f (float X)
- -- Function: long double exp2m1l (long double X)
- -- Function: _FloatN exp2m1fN (_FloatN X)
- -- Function: _FloatNx exp2m1fNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return a value equivalent to ‘exp2 (X) - 1’. They
- are computed in a way that is accurate even if X is near zero--a
- case where ‘exp2 (X) - 1’ would be inaccurate owing to subtraction
- of two numbers that are nearly equal.
- The ‘exp2m1’ functions are from TS 18661-4:2015.
- -- Function: double exp10m1 (double X)
- -- Function: float exp10m1f (float X)
- -- Function: long double exp10m1l (long double X)
- -- Function: _FloatN exp10m1fN (_FloatN X)
- -- Function: _FloatNx exp10m1fNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return a value equivalent to ‘exp10 (X) - 1’. They
- are computed in a way that is accurate even if X is near zero--a
- case where ‘exp10 (X) - 1’ would be inaccurate owing to subtraction
- of two numbers that are nearly equal.
- The ‘exp10m1’ functions are from TS 18661-4:2015.
- -- Function: double log1p (double X)
- -- Function: float log1pf (float X)
- -- Function: long double log1pl (long double X)
- -- Function: _FloatN log1pfN (_FloatN X)
- -- Function: _FloatNx log1pfNx (_FloatNx X)
- -- Function: double logp1 (double X)
- -- Function: float logp1f (float X)
- -- Function: long double logp1l (long double X)
- -- Function: _FloatN logp1fN (_FloatN X)
- -- Function: _FloatNx logp1fNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return a value equivalent to ‘log (1 + X)’. They
- are computed in a way that is accurate even if X is near zero.
- The ‘logp1’ names for these functions are from TS 18661-4:2015.
- -- Function: double log2p1 (double X)
- -- Function: float log2p1f (float X)
- -- Function: long double log2p1l (long double X)
- -- Function: _FloatN log2p1fN (_FloatN X)
- -- Function: _FloatNx log2p1fNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return a value equivalent to ‘log2 (1 + X)’. They
- are computed in a way that is accurate even if X is near zero.
- The ‘log2p1’ functions are from TS 18661-4:2015.
- -- Function: double log10p1 (double X)
- -- Function: float log10p1f (float X)
- -- Function: long double log10p1l (long double X)
- -- Function: _FloatN log10p1fN (_FloatN X)
- -- Function: _FloatNx log10p1fNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return a value equivalent to ‘log10 (1 + X)’. They
- are computed in a way that is accurate even if X is near zero.
- The ‘log10p1’ functions are from TS 18661-4:2015.
- ISO C99 defines complex variants of some of the exponentiation and
- logarithm functions.
- -- Function: complex double cexp (complex double Z)
- -- Function: complex float cexpf (complex float Z)
- -- Function: complex long double cexpl (complex long double Z)
- -- Function: complex _FloatN cexpfN (complex _FloatN Z)
- -- Function: complex _FloatNx cexpfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return ‘e’ (the base of natural logarithms) raised
- to the power of Z. Mathematically, this corresponds to the value
- exp (z) = exp (creal (z)) * (cos (cimag (z)) + I * sin (cimag (z)))
- -- Function: complex double clog (complex double Z)
- -- Function: complex float clogf (complex float Z)
- -- Function: complex long double clogl (complex long double Z)
- -- Function: complex _FloatN clogfN (complex _FloatN Z)
- -- Function: complex _FloatNx clogfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the natural logarithm of Z. Mathematically,
- this corresponds to the value
- log (z) = log (cabs (z)) + I * carg (z)
- ‘clog’ has a pole at 0, and will signal overflow if Z equals or is
- very close to 0. It is well-defined for all other values of Z.
- -- Function: complex double clog10 (complex double Z)
- -- Function: complex float clog10f (complex float Z)
- -- Function: complex long double clog10l (complex long double Z)
- -- Function: complex _FloatN clog10fN (complex _FloatN Z)
- -- Function: complex _FloatNx clog10fNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the base 10 logarithm of the complex value
- Z. Mathematically, this corresponds to the value
- log10 (z) = log10 (cabs (z)) + I * carg (z) / log (10)
- All these functions, including the ‘_FloatN’ and ‘_FloatNx’
- variants, are GNU extensions.
- -- Function: complex double csqrt (complex double Z)
- -- Function: complex float csqrtf (complex float Z)
- -- Function: complex long double csqrtl (complex long double Z)
- -- Function: complex _FloatN csqrtfN (_FloatN Z)
- -- Function: complex _FloatNx csqrtfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the complex square root of the argument Z.
- Unlike the real-valued functions, they are defined for all values
- of Z.
- -- Function: complex double cpow (complex double BASE, complex double
- POWER)
- -- Function: complex float cpowf (complex float BASE, complex float
- POWER)
- -- Function: complex long double cpowl (complex long double BASE,
- complex long double POWER)
- -- Function: complex _FloatN cpowfN (complex _FloatN BASE, complex
- _FloatN POWER)
- -- Function: complex _FloatNx cpowfNx (complex _FloatNx BASE, complex
- _FloatNx POWER)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return BASE raised to the power of POWER. This is
- equivalent to ‘cexp (y * clog (x))’
- File: libc.info, Node: Hyperbolic Functions, Next: Special Functions, Prev: Exponents and Logarithms, Up: Mathematics
- 19.5 Hyperbolic Functions
- =========================
- The functions in this section are related to the exponential functions;
- see *note Exponents and Logarithms::.
- -- Function: double sinh (double X)
- -- Function: float sinhf (float X)
- -- Function: long double sinhl (long double X)
- -- Function: _FloatN sinhfN (_FloatN X)
- -- Function: _FloatNx sinhfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the hyperbolic sine of X, defined
- mathematically as ‘(exp (X) - exp (-X)) / 2’. They may signal
- overflow if X is too large.
- -- Function: double cosh (double X)
- -- Function: float coshf (float X)
- -- Function: long double coshl (long double X)
- -- Function: _FloatN coshfN (_FloatN X)
- -- Function: _FloatNx coshfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the hyperbolic cosine of X, defined
- mathematically as ‘(exp (X) + exp (-X)) / 2’. They may signal
- overflow if X is too large.
- -- Function: double tanh (double X)
- -- Function: float tanhf (float X)
- -- Function: long double tanhl (long double X)
- -- Function: _FloatN tanhfN (_FloatN X)
- -- Function: _FloatNx tanhfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the hyperbolic tangent of X, defined
- mathematically as ‘sinh (X) / cosh (X)’. They may signal overflow
- if X is too large.
- There are counterparts for the hyperbolic functions which take
- complex arguments.
- -- Function: complex double csinh (complex double Z)
- -- Function: complex float csinhf (complex float Z)
- -- Function: complex long double csinhl (complex long double Z)
- -- Function: complex _FloatN csinhfN (complex _FloatN Z)
- -- Function: complex _FloatNx csinhfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the complex hyperbolic sine of Z, defined
- mathematically as ‘(exp (Z) - exp (-Z)) / 2’.
- -- Function: complex double ccosh (complex double Z)
- -- Function: complex float ccoshf (complex float Z)
- -- Function: complex long double ccoshl (complex long double Z)
- -- Function: complex _FloatN ccoshfN (complex _FloatN Z)
- -- Function: complex _FloatNx ccoshfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the complex hyperbolic cosine of Z, defined
- mathematically as ‘(exp (Z) + exp (-Z)) / 2’.
- -- Function: complex double ctanh (complex double Z)
- -- Function: complex float ctanhf (complex float Z)
- -- Function: complex long double ctanhl (complex long double Z)
- -- Function: complex _FloatN ctanhfN (complex _FloatN Z)
- -- Function: complex _FloatNx ctanhfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the complex hyperbolic tangent of Z, defined
- mathematically as ‘csinh (Z) / ccosh (Z)’.
- -- Function: double asinh (double X)
- -- Function: float asinhf (float X)
- -- Function: long double asinhl (long double X)
- -- Function: _FloatN asinhfN (_FloatN X)
- -- Function: _FloatNx asinhfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the inverse hyperbolic sine of X--the value
- whose hyperbolic sine is X.
- -- Function: double acosh (double X)
- -- Function: float acoshf (float X)
- -- Function: long double acoshl (long double X)
- -- Function: _FloatN acoshfN (_FloatN X)
- -- Function: _FloatNx acoshfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the inverse hyperbolic cosine of X--the
- value whose hyperbolic cosine is X. If X is less than ‘1’, ‘acosh’
- signals a domain error.
- -- Function: double atanh (double X)
- -- Function: float atanhf (float X)
- -- Function: long double atanhl (long double X)
- -- Function: _FloatN atanhfN (_FloatN X)
- -- Function: _FloatNx atanhfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the inverse hyperbolic tangent of X--the
- value whose hyperbolic tangent is X. If the absolute value of X is
- greater than ‘1’, ‘atanh’ signals a domain error; if it is equal to
- 1, ‘atanh’ returns infinity.
- -- Function: complex double casinh (complex double Z)
- -- Function: complex float casinhf (complex float Z)
- -- Function: complex long double casinhl (complex long double Z)
- -- Function: complex _FloatN casinhfN (complex _FloatN Z)
- -- Function: complex _FloatNx casinhfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the inverse complex hyperbolic sine of
- Z--the value whose complex hyperbolic sine is Z.
- -- Function: complex double cacosh (complex double Z)
- -- Function: complex float cacoshf (complex float Z)
- -- Function: complex long double cacoshl (complex long double Z)
- -- Function: complex _FloatN cacoshfN (complex _FloatN Z)
- -- Function: complex _FloatNx cacoshfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the inverse complex hyperbolic cosine of
- Z--the value whose complex hyperbolic cosine is Z. Unlike the
- real-valued functions, there are no restrictions on the value of Z.
- -- Function: complex double catanh (complex double Z)
- -- Function: complex float catanhf (complex float Z)
- -- Function: complex long double catanhl (complex long double Z)
- -- Function: complex _FloatN catanhfN (complex _FloatN Z)
- -- Function: complex _FloatNx catanhfNx (complex _FloatNx Z)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- These functions return the inverse complex hyperbolic tangent of
- Z--the value whose complex hyperbolic tangent is Z. Unlike the
- real-valued functions, there are no restrictions on the value of Z.
- File: libc.info, Node: Special Functions, Next: Errors in Math Functions, Prev: Hyperbolic Functions, Up: Mathematics
- 19.6 Special Functions
- ======================
- These are some more exotic mathematical functions which are sometimes
- useful. Currently they only have real-valued versions.
- -- Function: double erf (double X)
- -- Function: float erff (float X)
- -- Function: long double erfl (long double X)
- -- Function: _FloatN erffN (_FloatN X)
- -- Function: _FloatNx erffNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- ‘erf’ returns the error function of X. The error function is
- defined as
- erf (x) = 2/sqrt(pi) * integral from 0 to x of exp(-t^2) dt
- -- Function: double erfc (double X)
- -- Function: float erfcf (float X)
- -- Function: long double erfcl (long double X)
- -- Function: _FloatN erfcfN (_FloatN X)
- -- Function: _FloatNx erfcfNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- ‘erfc’ returns ‘1.0 - erf(X)’, but computed in a fashion that
- avoids round-off error when X is large.
- -- Function: double lgamma (double X)
- -- Function: float lgammaf (float X)
- -- Function: long double lgammal (long double X)
- -- Function: _FloatN lgammafN (_FloatN X)
- -- Function: _FloatNx lgammafNx (_FloatNx X)
- Preliminary: | MT-Unsafe race:signgam | AS-Unsafe | AC-Safe | *Note
- POSIX Safety Concepts::.
- ‘lgamma’ returns the natural logarithm of the absolute value of the
- gamma function of X. The gamma function is defined as
- gamma (x) = integral from 0 to oo of t^(x-1) e^-t dt
- The sign of the gamma function is stored in the global variable
- SIGNGAM, which is declared in ‘math.h’. It is ‘1’ if the
- intermediate result was positive or zero, or ‘-1’ if it was
- negative.
- To compute the real gamma function you can use the ‘tgamma’
- function or you can compute the values as follows:
- lgam = lgamma(x);
- gam = signgam*exp(lgam);
- The gamma function has singularities at the non-positive integers.
- ‘lgamma’ will raise the zero divide exception if evaluated at a
- singularity.
- -- Function: double lgamma_r (double X, int *SIGNP)
- -- Function: float lgammaf_r (float X, int *SIGNP)
- -- Function: long double lgammal_r (long double X, int *SIGNP)
- -- Function: _FloatN lgammafN_r (_FloatN X, int *SIGNP)
- -- Function: _FloatNx lgammafNx_r (_FloatNx X, int *SIGNP)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- ‘lgamma_r’ is just like ‘lgamma’, but it stores the sign of the
- intermediate result in the variable pointed to by SIGNP instead of
- in the SIGNGAM global. This means it is reentrant.
- The ‘lgammafN_r’ and ‘lgammafNx_r’ functions are GNU extensions.
- -- Function: double gamma (double X)
- -- Function: float gammaf (float X)
- -- Function: long double gammal (long double X)
- Preliminary: | MT-Unsafe race:signgam | AS-Unsafe | AC-Safe | *Note
- POSIX Safety Concepts::.
- These functions exist for compatibility reasons. They are
- equivalent to ‘lgamma’ etc. It is better to use ‘lgamma’ since for
- one the name reflects better the actual computation, and moreover
- ‘lgamma’ is standardized in ISO C99 while ‘gamma’ is not.
- -- Function: double tgamma (double X)
- -- Function: float tgammaf (float X)
- -- Function: long double tgammal (long double X)
- -- Function: _FloatN tgammafN (_FloatN X)
- -- Function: _FloatNx tgammafNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- ‘tgamma’ applies the gamma function to X. The gamma function is
- defined as
- gamma (x) = integral from 0 to oo of t^(x-1) e^-t dt
- This function was introduced in ISO C99. The ‘_FloatN’ and
- ‘_FloatNx’ variants were introduced in ISO/IEC TS 18661-3.
- -- Function: double j0 (double X)
- -- Function: float j0f (float X)
- -- Function: long double j0l (long double X)
- -- Function: _FloatN j0fN (_FloatN X)
- -- Function: _FloatNx j0fNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- ‘j0’ returns the Bessel function of the first kind of order 0 of X.
- It may signal underflow if X is too large.
- The ‘_FloatN’ and ‘_FloatNx’ variants are GNU extensions.
- -- Function: double j1 (double X)
- -- Function: float j1f (float X)
- -- Function: long double j1l (long double X)
- -- Function: _FloatN j1fN (_FloatN X)
- -- Function: _FloatNx j1fNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- ‘j1’ returns the Bessel function of the first kind of order 1 of X.
- It may signal underflow if X is too large.
- The ‘_FloatN’ and ‘_FloatNx’ variants are GNU extensions.
- -- Function: double jn (int N, double X)
- -- Function: float jnf (int N, float X)
- -- Function: long double jnl (int N, long double X)
- -- Function: _FloatN jnfN (int N, _FloatN X)
- -- Function: _FloatNx jnfNx (int N, _FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- ‘jn’ returns the Bessel function of the first kind of order N of X.
- It may signal underflow if X is too large.
- The ‘_FloatN’ and ‘_FloatNx’ variants are GNU extensions.
- -- Function: double y0 (double X)
- -- Function: float y0f (float X)
- -- Function: long double y0l (long double X)
- -- Function: _FloatN y0fN (_FloatN X)
- -- Function: _FloatNx y0fNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- ‘y0’ returns the Bessel function of the second kind of order 0 of
- X. It may signal underflow if X is too large. If X is negative,
- ‘y0’ signals a domain error; if it is zero, ‘y0’ signals overflow
- and returns -oo.
- The ‘_FloatN’ and ‘_FloatNx’ variants are GNU extensions.
- -- Function: double y1 (double X)
- -- Function: float y1f (float X)
- -- Function: long double y1l (long double X)
- -- Function: _FloatN y1fN (_FloatN X)
- -- Function: _FloatNx y1fNx (_FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- ‘y1’ returns the Bessel function of the second kind of order 1 of
- X. It may signal underflow if X is too large. If X is negative,
- ‘y1’ signals a domain error; if it is zero, ‘y1’ signals overflow
- and returns -oo.
- The ‘_FloatN’ and ‘_FloatNx’ variants are GNU extensions.
- -- Function: double yn (int N, double X)
- -- Function: float ynf (int N, float X)
- -- Function: long double ynl (int N, long double X)
- -- Function: _FloatN ynfN (int N, _FloatN X)
- -- Function: _FloatNx ynfNx (int N, _FloatNx X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- ‘yn’ returns the Bessel function of the second kind of order N of
- X. It may signal underflow if X is too large. If X is negative,
- ‘yn’ signals a domain error; if it is zero, ‘yn’ signals overflow
- and returns -oo.
- The ‘_FloatN’ and ‘_FloatNx’ variants are GNU extensions.
- File: libc.info, Node: Errors in Math Functions, Next: Pseudo-Random Numbers, Prev: Special Functions, Up: Mathematics
- 19.7 Errors in Math Functions
- =============================
- Errors are measured in "units of the last place". This is a measure for
- the relative error. For a number z with the representation d.d...d*2^e
- (we assume IEEE floating-point numbers with base 2) the ULP is
- represented by
- |d.d...d - (z / 2^e)| / 2^(p - 1)
- where p is the number of bits in the mantissa of the floating-point
- number representation. Ideally the error for all functions is always
- less than 0.5ulps in round-to-nearest mode. Using rounding bits this is
- also possible and normally implemented for the basic operations. Except
- for certain functions such as ‘sqrt’, ‘fma’ and ‘rint’ whose results are
- fully specified by reference to corresponding IEEE 754 floating-point
- operations, and conversions between strings and floating point, the GNU
- C Library does not aim for correctly rounded results for functions in
- the math library, and does not aim for correctness in whether "inexact"
- exceptions are raised. Instead, the goals for accuracy of functions
- without fully specified results are as follows; some functions have bugs
- meaning they do not meet these goals in all cases. In the future, the
- GNU C Library may provide some other correctly rounding functions under
- the names such as ‘crsin’ proposed for an extension to ISO C.
- • Each function with a floating-point result behaves as if it
- computes an infinite-precision result that is within a few ulp (in
- both real and complex parts, for functions with complex results) of
- the mathematically correct value of the function (interpreted
- together with ISO C or POSIX semantics for the function in
- question) at the exact value passed as the input. Exceptions are
- raised appropriately for this value and in accordance with IEEE 754
- / ISO C / POSIX semantics, and it is then rounded according to the
- current rounding direction to the result that is returned to the
- user. ‘errno’ may also be set (*note Math Error Reporting::).
- (The "inexact" exception may be raised, or not raised, even if this
- is inconsistent with the infinite-precision value.)
- • For the IBM ‘long double’ format, as used on PowerPC GNU/Linux, the
- accuracy goal is weaker for input values not exactly representable
- in 106 bits of precision; it is as if the input value is some value
- within 0.5ulp of the value actually passed, where "ulp" is
- interpreted in terms of a fixed-precision 106-bit mantissa, but not
- necessarily the exact value actually passed with discontiguous
- mantissa bits.
- • For the IBM ‘long double’ format, functions whose results are fully
- specified by reference to corresponding IEEE 754 floating-point
- operations have the same accuracy goals as other functions, but
- with the error bound being the same as that for division (3ulp).
- Furthermore, "inexact" and "underflow" exceptions may be raised for
- all functions for any inputs, even where such exceptions are
- inconsistent with the returned value, since the underlying
- floating-point arithmetic has that property.
- • Functions behave as if the infinite-precision result computed is
- zero, infinity or NaN if and only if that is the mathematically
- correct infinite-precision result. They behave as if the
- infinite-precision result computed always has the same sign as the
- mathematically correct result.
- • If the mathematical result is more than a few ulp above the
- overflow threshold for the current rounding direction, the value
- returned is the appropriate overflow value for the current rounding
- direction, with the overflow exception raised.
- • If the mathematical result has magnitude well below half the least
- subnormal magnitude, the returned value is either zero or the least
- subnormal (in each case, with the correct sign), according to the
- current rounding direction and with the underflow exception raised.
- • Where the mathematical result underflows (before rounding) and is
- not exactly representable as a floating-point value, the function
- does not behave as if the computed infinite-precision result is an
- exact value in the subnormal range. This means that the underflow
- exception is raised other than possibly for cases where the
- mathematical result is very close to the underflow threshold and
- the function behaves as if it computes an infinite-precision result
- that does not underflow. (So there may be spurious underflow
- exceptions in cases where the underflowing result is exact, but not
- missing underflow exceptions in cases where it is inexact.)
- • The GNU C Library does not aim for functions to satisfy other
- properties of the underlying mathematical function, such as
- monotonicity, where not implied by the above goals.
- • All the above applies to both real and complex parts, for complex
- functions.
- Therefore many of the functions in the math library have errors. The
- math testsuite only flags results larger than 9ulp (or 16 for IBM ‘long
- double’ format) as errors; although most of the implementations show
- errors smaller than the limit.
- A more comprehensive analysis of the GNU C Library math functions
- precision could be found in 'Accuracy of Mathematical Functions in
- Single, Double, Double Extended, and Quadruple Precision'; Brian
- Gladman, Vincenzo Innocente, John Mather, and Paul Zimmermann at
- <<https://inria.hal.science/hal-03141101>>. It does not cover complex
- functions, nor ‘jn’/‘yn’, and it is only for x86_64, and for rounding to
- nearest, and does not cover any architecture variations (in particular
- IBM ‘long double’ is out of scope).
- For complex functions, some analysis of the GNU C Library math
- functions can be found in 'Accuracy of Complex Mathematical Operations
- and Functions in Single and Double Precision'; Paul Caprioli, Vincenzo
- Innocente, Paul Zimmermann at <https://inria.hal.science/hal-04714173>.
- It only covers ‘float’ and ‘double’, only for x86_64, and for rounding
- to nearest, and does not cover any architecture variations.
- File: libc.info, Node: Pseudo-Random Numbers, Next: FP Function Optimizations, Prev: Errors in Math Functions, Up: Mathematics
- 19.8 Pseudo-Random Numbers
- ==========================
- This section describes the GNU facilities for generating a series of
- pseudo-random numbers. The numbers generated are not truly random;
- typically, they form a sequence that repeats periodically, with a period
- so large that you can ignore it for ordinary purposes. The random
- number generator works by remembering a “seed” value which it uses to
- compute the next random number and also to compute a new seed.
- Although the generated numbers look unpredictable within one run of a
- program, the sequence of numbers is _exactly the same_ from one run to
- the next. This is because the initial seed is always the same. This is
- convenient when you are debugging a program, but it is unhelpful if you
- want the program to behave unpredictably. If you want a different
- pseudo-random series each time your program runs, you must specify a
- different seed each time. For ordinary purposes, basing the seed on the
- current time works well. For random numbers in cryptography, *note
- Unpredictable Bytes::.
- You can obtain repeatable sequences of numbers on a particular
- machine type by specifying the same initial seed value for the random
- number generator. There is no standard meaning for a particular seed
- value; the same seed, used in different C libraries or on different CPU
- types, will give you different random numbers.
- The GNU C Library supports the standard ISO C random number functions
- plus two other sets derived from BSD and SVID. The BSD and ISO C
- functions provide identical, somewhat limited functionality. If only a
- small number of random bits are required, we recommend you use the ISO C
- interface, ‘rand’ and ‘srand’. The SVID functions provide a more
- flexible interface, which allows better random number generator
- algorithms, provides more random bits (up to 48) per call, and can
- provide random floating-point numbers. These functions are required by
- the XPG standard and therefore will be present in all modern Unix
- systems.
- * Menu:
- * ISO Random:: ‘rand’ and friends.
- * BSD Random:: ‘random’ and friends.
- * SVID Random:: ‘drand48’ and friends.
- * High Quality Random:: ‘arc4random’ and friends.
- File: libc.info, Node: ISO Random, Next: BSD Random, Up: Pseudo-Random Numbers
- 19.8.1 ISO C Random Number Functions
- ------------------------------------
- This section describes the random number functions that are part of the
- ISO C standard.
- To use these facilities, you should include the header file
- ‘stdlib.h’ in your program.
- -- Macro: int RAND_MAX
- The value of this macro is an integer constant representing the
- largest value the ‘rand’ function can return. In the GNU C
- Library, it is ‘2147483647’, which is the largest signed integer
- representable in 32 bits. In other libraries, it may be as low as
- ‘32767’.
- -- Function: int rand (void)
- Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
- POSIX Safety Concepts::.
- The ‘rand’ function returns the next pseudo-random number in the
- series. The value ranges from ‘0’ to ‘RAND_MAX’.
- -- Function: void srand (unsigned int SEED)
- Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
- POSIX Safety Concepts::.
- This function establishes SEED as the seed for a new series of
- pseudo-random numbers. If you call ‘rand’ before a seed has been
- established with ‘srand’, it uses the value ‘1’ as a default seed.
- To produce a different pseudo-random series each time your program
- is run, do ‘srand (time (0))’.
- POSIX.1 extended the C standard functions to support reproducible
- random numbers in multi-threaded programs. However, the extension is
- badly designed and unsuitable for serious work.
- -- Function: int rand_r (unsigned int *SEED)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function returns a random number in the range 0 to ‘RAND_MAX’
- just as ‘rand’ does. However, all its state is stored in the SEED
- argument. This means the RNG's state can only have as many bits as
- the type ‘unsigned int’ has. This is far too few to provide a good
- RNG.
- If your program requires a reentrant RNG, we recommend you use the
- reentrant GNU extensions to the SVID random number generator. The
- POSIX.1 interface should only be used when the GNU extensions are
- not available.
- File: libc.info, Node: BSD Random, Next: SVID Random, Prev: ISO Random, Up: Pseudo-Random Numbers
- 19.8.2 BSD Random Number Functions
- ----------------------------------
- This section describes a set of random number generation functions that
- are derived from BSD. There is no advantage to using these functions
- with the GNU C Library; we support them for BSD compatibility only.
- The prototypes for these functions are in ‘stdlib.h’.
- -- Function: long int random (void)
- Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
- POSIX Safety Concepts::.
- This function returns the next pseudo-random number in the
- sequence. The value returned ranges from ‘0’ to ‘2147483647’.
- *NB:* Temporarily this function was defined to return a ‘int32_t’
- value to indicate that the return value always contains 32 bits
- even if ‘long int’ is wider. The standard demands it differently.
- Users must always be aware of the 32-bit limitation, though.
- -- Function: void srandom (unsigned int SEED)
- Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
- POSIX Safety Concepts::.
- The ‘srandom’ function sets the state of the random number
- generator based on the integer SEED. If you supply a SEED value of
- ‘1’, this will cause ‘random’ to reproduce the default set of
- random numbers.
- To produce a different set of pseudo-random numbers each time your
- program runs, do ‘srandom (time (0))’.
- -- Function: char * initstate (unsigned int SEED, char *STATE, size_t
- SIZE)
- Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
- POSIX Safety Concepts::.
- The ‘initstate’ function is used to initialize the random number
- generator state. The argument STATE is an array of SIZE bytes,
- used to hold the state information. It is initialized based on
- SEED. The size must be between 8 and 256 bytes, and should be a
- power of two. The bigger the STATE array, the better.
- The return value is the previous value of the state information
- array. You can use this value later as an argument to ‘setstate’
- to restore that state.
- -- Function: char * setstate (char *STATE)
- Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
- POSIX Safety Concepts::.
- The ‘setstate’ function restores the random number state
- information STATE. The argument must have been the result of a
- previous call to INITSTATE or SETSTATE.
- The return value is the previous value of the state information
- array. You can use this value later as an argument to ‘setstate’
- to restore that state.
- If the function fails the return value is ‘NULL’.
- The four functions described so far in this section all work on a
- state which is shared by all threads. The state is not directly
- accessible to the user and can only be modified by these functions.
- This makes it hard to deal with situations where each thread should have
- its own pseudo-random number generator.
- The GNU C Library contains four additional functions which contain
- the state as an explicit parameter and therefore make it possible to
- handle thread-local PRNGs. Besides this there is no difference. In
- fact, the four functions already discussed are implemented internally
- using the following interfaces.
- The ‘stdlib.h’ header contains a definition of the following type:
- -- Data Type: struct random_data
- Objects of type ‘struct random_data’ contain the information
- necessary to represent the state of the PRNG. Although a complete
- definition of the type is present the type should be treated as
- opaque.
- The functions modifying the state follow exactly the already
- described functions.
- -- Function: int random_r (struct random_data *restrict BUF, int32_t
- *restrict RESULT)
- Preliminary: | MT-Safe race:buf | AS-Safe | AC-Unsafe corrupt |
- *Note POSIX Safety Concepts::.
- The ‘random_r’ function behaves exactly like the ‘random’ function
- except that it uses and modifies the state in the object pointed to
- by the first parameter instead of the global state.
- -- Function: int srandom_r (unsigned int SEED, struct random_data *BUF)
- Preliminary: | MT-Safe race:buf | AS-Safe | AC-Unsafe corrupt |
- *Note POSIX Safety Concepts::.
- The ‘srandom_r’ function behaves exactly like the ‘srandom’
- function except that it uses and modifies the state in the object
- pointed to by the second parameter instead of the global state.
- -- Function: int initstate_r (unsigned int SEED, char *restrict
- STATEBUF, size_t STATELEN, struct random_data *restrict BUF)
- Preliminary: | MT-Safe race:buf | AS-Safe | AC-Unsafe corrupt |
- *Note POSIX Safety Concepts::.
- The ‘initstate_r’ function behaves exactly like the ‘initstate’
- function except that it uses and modifies the state in the object
- pointed to by the fourth parameter instead of the global state.
- -- Function: int setstate_r (char *restrict STATEBUF, struct
- random_data *restrict BUF)
- Preliminary: | MT-Safe race:buf | AS-Safe | AC-Unsafe corrupt |
- *Note POSIX Safety Concepts::.
- The ‘setstate_r’ function behaves exactly like the ‘setstate’
- function except that it uses and modifies the state in the object
- pointed to by the first parameter instead of the global state.
- File: libc.info, Node: SVID Random, Next: High Quality Random, Prev: BSD Random, Up: Pseudo-Random Numbers
- 19.8.3 SVID Random Number Function
- ----------------------------------
- The C library on SVID systems contains yet another kind of random number
- generator functions. They use a state of 48 bits of data. The user can
- choose among a collection of functions which return the random bits in
- different forms.
- Generally there are two kinds of function. The first uses a state of
- the random number generator which is shared among several functions and
- by all threads of the process. The second requires the user to handle
- the state.
- All functions have in common that they use the same congruential
- formula with the same constants. The formula is
- Y = (a * X + c) mod m
- where X is the state of the generator at the beginning and Y the state
- at the end. ‘a’ and ‘c’ are constants determining the way the generator
- works. By default they are
- a = 0x5DEECE66D = 25214903917
- c = 0xb = 11
- but they can also be changed by the user. ‘m’ is of course 2^48 since
- the state consists of a 48-bit array.
- The prototypes for these functions are in ‘stdlib.h’.
- -- Function: double drand48 (void)
- Preliminary: | MT-Unsafe race:drand48 | AS-Unsafe | AC-Unsafe
- corrupt | *Note POSIX Safety Concepts::.
- This function returns a ‘double’ value in the range of ‘0.0’ to
- ‘1.0’ (exclusive). The random bits are determined by the global
- state of the random number generator in the C library.
- Since the ‘double’ type according to IEEE 754 has a 52-bit mantissa
- this means 4 bits are not initialized by the random number
- generator. These are (of course) chosen to be the least
- significant bits and they are initialized to ‘0’.
- -- Function: double erand48 (unsigned short int XSUBI[3])
- Preliminary: | MT-Unsafe race:drand48 | AS-Unsafe | AC-Unsafe
- corrupt | *Note POSIX Safety Concepts::.
- This function returns a ‘double’ value in the range of ‘0.0’ to
- ‘1.0’ (exclusive), similarly to ‘drand48’. The argument is an
- array describing the state of the random number generator.
- This function can be called subsequently since it updates the array
- to guarantee random numbers. The array should have been
- initialized before initial use to obtain reproducible results.
- -- Function: long int lrand48 (void)
- Preliminary: | MT-Unsafe race:drand48 | AS-Unsafe | AC-Unsafe
- corrupt | *Note POSIX Safety Concepts::.
- The ‘lrand48’ function returns an integer value in the range of ‘0’
- to ‘2^31’ (exclusive). Even if the size of the ‘long int’ type can
- take more than 32 bits, no higher numbers are returned. The random
- bits are determined by the global state of the random number
- generator in the C library.
- -- Function: long int nrand48 (unsigned short int XSUBI[3])
- Preliminary: | MT-Unsafe race:drand48 | AS-Unsafe | AC-Unsafe
- corrupt | *Note POSIX Safety Concepts::.
- This function is similar to the ‘lrand48’ function in that it
- returns a number in the range of ‘0’ to ‘2^31’ (exclusive) but the
- state of the random number generator used to produce the random
- bits is determined by the array provided as the parameter to the
- function.
- The numbers in the array are updated afterwards so that subsequent
- calls to this function yield different results (as is expected of a
- random number generator). The array should have been initialized
- before the first call to obtain reproducible results.
- -- Function: long int mrand48 (void)
- Preliminary: | MT-Unsafe race:drand48 | AS-Unsafe | AC-Unsafe
- corrupt | *Note POSIX Safety Concepts::.
- The ‘mrand48’ function is similar to ‘lrand48’. The only
- difference is that the numbers returned are in the range ‘-2^31’ to
- ‘2^31’ (exclusive).
- -- Function: long int jrand48 (unsigned short int XSUBI[3])
- Preliminary: | MT-Unsafe race:drand48 | AS-Unsafe | AC-Unsafe
- corrupt | *Note POSIX Safety Concepts::.
- The ‘jrand48’ function is similar to ‘nrand48’. The only
- difference is that the numbers returned are in the range ‘-2^31’ to
- ‘2^31’ (exclusive). For the ‘xsubi’ parameter the same
- requirements are necessary.
- The internal state of the random number generator can be initialized
- in several ways. The methods differ in the completeness of the
- information provided.
- -- Function: void srand48 (long int SEEDVAL)
- Preliminary: | MT-Unsafe race:drand48 | AS-Unsafe | AC-Unsafe
- corrupt | *Note POSIX Safety Concepts::.
- The ‘srand48’ function sets the most significant 32 bits of the
- internal state of the random number generator to the least
- significant 32 bits of the SEEDVAL parameter. The lower 16 bits
- are initialized to the value ‘0x330E’. Even if the ‘long int’ type
- contains more than 32 bits only the lower 32 bits are used.
- Owing to this limitation, initialization of the state of this
- function is not very useful. But it makes it easy to use a
- construct like ‘srand48 (time (0))’.
- A side-effect of this function is that the values ‘a’ and ‘c’ from
- the internal state, which are used in the congruential formula, are
- reset to the default values given above. This is of importance
- once the user has called the ‘lcong48’ function (see below).
- -- Function: unsigned short int * seed48 (unsigned short int
- SEED16V[3])
- Preliminary: | MT-Unsafe race:drand48 | AS-Unsafe | AC-Unsafe
- corrupt | *Note POSIX Safety Concepts::.
- The ‘seed48’ function initializes all 48 bits of the state of the
- internal random number generator from the contents of the parameter
- SEED16V. Here the lower 16 bits of the first element of SEED16V
- initialize the least significant 16 bits of the internal state, the
- lower 16 bits of ‘SEED16V[1]’ initialize the mid-order 16 bits of
- the state and the 16 lower bits of ‘SEED16V[2]’ initialize the most
- significant 16 bits of the state.
- Unlike ‘srand48’ this function lets the user initialize all 48 bits
- of the state.
- The value returned by ‘seed48’ is a pointer to an array containing
- the values of the internal state before the change. This might be
- useful to restart the random number generator at a certain state.
- Otherwise the value can simply be ignored.
- As for ‘srand48’, the values ‘a’ and ‘c’ from the congruential
- formula are reset to the default values.
- There is one more function to initialize the random number generator
- which enables you to specify even more information by allowing you to
- change the parameters in the congruential formula.
- -- Function: void lcong48 (unsigned short int PARAM[7])
- Preliminary: | MT-Unsafe race:drand48 | AS-Unsafe | AC-Unsafe
- corrupt | *Note POSIX Safety Concepts::.
- The ‘lcong48’ function allows the user to change the complete state
- of the random number generator. Unlike ‘srand48’ and ‘seed48’,
- this function also changes the constants in the congruential
- formula.
- From the seven elements in the array PARAM the least significant 16
- bits of the entries ‘PARAM[0]’ to ‘PARAM[2]’ determine the initial
- state, the least significant 16 bits of ‘PARAM[3]’ to ‘PARAM[5]’
- determine the 48 bit constant ‘a’ and ‘PARAM[6]’ determines the
- 16-bit value ‘c’.
- All the above functions have in common that they use the global
- parameters for the congruential formula. In multi-threaded programs it
- might sometimes be useful to have different parameters in different
- threads. For this reason all the above functions have a counterpart
- which works on a description of the random number generator in the
- user-supplied buffer instead of the global state.
- Please note that it is no problem if several threads use the global
- state if all threads use the functions which take a pointer to an array
- containing the state. The random numbers are computed following the
- same loop but if the state in the array is different all threads will
- obtain an individual random number generator.
- The user-supplied buffer must be of type ‘struct drand48_data’. This
- type should be regarded as opaque and not manipulated directly.
- -- Function: int drand48_r (struct drand48_data *BUFFER, double
- *RESULT)
- Preliminary: | MT-Safe race:buffer | AS-Safe | AC-Unsafe corrupt |
- *Note POSIX Safety Concepts::.
- This function is equivalent to the ‘drand48’ function with the
- difference that it does not modify the global random number
- generator parameters but instead the parameters in the buffer
- supplied through the pointer BUFFER. The random number is returned
- in the variable pointed to by RESULT.
- The return value of the function indicates whether the call
- succeeded. If the value is less than ‘0’ an error occurred and
- ‘errno’ is set to indicate the problem.
- This function is a GNU extension and should not be used in portable
- programs.
- -- Function: int erand48_r (unsigned short int XSUBI[3], struct
- drand48_data *BUFFER, double *RESULT)
- Preliminary: | MT-Safe race:buffer | AS-Safe | AC-Unsafe corrupt |
- *Note POSIX Safety Concepts::.
- The ‘erand48_r’ function works like ‘erand48’, but in addition it
- takes an argument BUFFER which describes the random number
- generator. The state of the random number generator is taken from
- the ‘xsubi’ array, the parameters for the congruential formula from
- the global random number generator data. The random number is
- returned in the variable pointed to by RESULT.
- The return value is non-negative if the call succeeded.
- This function is a GNU extension and should not be used in portable
- programs.
- -- Function: int lrand48_r (struct drand48_data *BUFFER, long int
- *RESULT)
- Preliminary: | MT-Safe race:buffer | AS-Safe | AC-Unsafe corrupt |
- *Note POSIX Safety Concepts::.
- This function is similar to ‘lrand48’, but in addition it takes a
- pointer to a buffer describing the state of the random number
- generator just like ‘drand48’.
- If the return value of the function is non-negative the variable
- pointed to by RESULT contains the result. Otherwise an error
- occurred.
- This function is a GNU extension and should not be used in portable
- programs.
- -- Function: int nrand48_r (unsigned short int XSUBI[3], struct
- drand48_data *BUFFER, long int *RESULT)
- Preliminary: | MT-Safe race:buffer | AS-Safe | AC-Unsafe corrupt |
- *Note POSIX Safety Concepts::.
- The ‘nrand48_r’ function works like ‘nrand48’ in that it produces a
- random number in the range ‘0’ to ‘2^31’. But instead of using the
- global parameters for the congruential formula it uses the
- information from the buffer pointed to by BUFFER. The state is
- described by the values in XSUBI.
- If the return value is non-negative the variable pointed to by
- RESULT contains the result.
- This function is a GNU extension and should not be used in portable
- programs.
- -- Function: int mrand48_r (struct drand48_data *BUFFER, long int
- *RESULT)
- Preliminary: | MT-Safe race:buffer | AS-Safe | AC-Unsafe corrupt |
- *Note POSIX Safety Concepts::.
- This function is similar to ‘mrand48’ but like the other reentrant
- functions it uses the random number generator described by the
- value in the buffer pointed to by BUFFER.
- If the return value is non-negative the variable pointed to by
- RESULT contains the result.
- This function is a GNU extension and should not be used in portable
- programs.
- -- Function: int jrand48_r (unsigned short int XSUBI[3], struct
- drand48_data *BUFFER, long int *RESULT)
- Preliminary: | MT-Safe race:buffer | AS-Safe | AC-Unsafe corrupt |
- *Note POSIX Safety Concepts::.
- The ‘jrand48_r’ function is similar to ‘jrand48’. Like the other
- reentrant functions of this function family it uses the
- congruential formula parameters from the buffer pointed to by
- BUFFER.
- If the return value is non-negative the variable pointed to by
- RESULT contains the result.
- This function is a GNU extension and should not be used in portable
- programs.
- Before any of the above functions are used the buffer of type ‘struct
- drand48_data’ should be initialized. The easiest way to do this is to
- fill the whole buffer with null bytes, e.g. by
- memset (buffer, '\0', sizeof (struct drand48_data));
- Using any of the reentrant functions of this family now will
- automatically initialize the random number generator to the default
- values for the state and the parameters of the congruential formula.
- The other possibility is to use any of the functions which explicitly
- initialize the buffer. Though it might be obvious how to initialize the
- buffer from looking at the parameter to the function, it is highly
- recommended to use these functions since the result might not always be
- what you expect.
- -- Function: int srand48_r (long int SEEDVAL, struct drand48_data
- *BUFFER)
- Preliminary: | MT-Safe race:buffer | AS-Safe | AC-Unsafe corrupt |
- *Note POSIX Safety Concepts::.
- The description of the random number generator represented by the
- information in BUFFER is initialized similarly to what the function
- ‘srand48’ does. The state is initialized from the parameter
- SEEDVAL and the parameters for the congruential formula are
- initialized to their default values.
- If the return value is non-negative the function call succeeded.
- This function is a GNU extension and should not be used in portable
- programs.
- -- Function: int seed48_r (unsigned short int SEED16V[3], struct
- drand48_data *BUFFER)
- Preliminary: | MT-Safe race:buffer | AS-Safe | AC-Unsafe corrupt |
- *Note POSIX Safety Concepts::.
- This function is similar to ‘srand48_r’ but like ‘seed48’ it
- initializes all 48 bits of the state from the parameter SEED16V.
- If the return value is non-negative the function call succeeded.
- It does not return a pointer to the previous state of the random
- number generator like the ‘seed48’ function does. If the user
- wants to preserve the state for a later re-run s/he can copy the
- whole buffer pointed to by BUFFER.
- This function is a GNU extension and should not be used in portable
- programs.
- -- Function: int lcong48_r (unsigned short int PARAM[7], struct
- drand48_data *BUFFER)
- Preliminary: | MT-Safe race:buffer | AS-Safe | AC-Unsafe corrupt |
- *Note POSIX Safety Concepts::.
- This function initializes all aspects of the random number
- generator described in BUFFER with the data in PARAM. Here it is
- especially true that the function does more than just copying the
- contents of PARAM and BUFFER. More work is required and therefore
- it is important to use this function rather than initializing the
- random number generator directly.
- If the return value is non-negative the function call succeeded.
- This function is a GNU extension and should not be used in portable
- programs.
- File: libc.info, Node: High Quality Random, Prev: SVID Random, Up: Pseudo-Random Numbers
- 19.8.4 High Quality Random Number Functions
- -------------------------------------------
- This section describes the random number functions provided as a GNU
- extension, based on OpenBSD interfaces.
- The GNU C Library uses kernel entropy obtained either through
- ‘getrandom’ or by reading ‘/dev/urandom’ to seed.
- These functions provide higher random quality than ISO, BSD, and SVID
- functions, and may be used in cryptographic contexts.
- The prototypes for these functions are in ‘stdlib.h’.
- -- Function: uint32_t arc4random (void)
- | MT-Safe | AS-Unsafe corrupt | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function returns a single 32-bit value in the range of ‘0’ to
- ‘2^32−1’ (inclusive), which is twice the range of ‘rand’ and
- ‘random’.
- -- Function: void arc4random_buf (void *BUFFER, size_t LENGTH)
- | MT-Safe | AS-Unsafe corrupt | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function fills the region BUFFER of length LENGTH bytes with
- random data.
- -- Function: uint32_t arc4random_uniform (uint32_t UPPER_BOUND)
- | MT-Safe | AS-Unsafe corrupt | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function returns a single 32-bit value, uniformly distributed
- but less than the UPPER_BOUND. It avoids the modulo bias when the
- upper bound is not a power of two.
- File: libc.info, Node: FP Function Optimizations, Prev: Pseudo-Random Numbers, Up: Mathematics
- 19.9 Is Fast Code or Small Code preferred?
- ==========================================
- If an application uses many floating point functions it is often the
- case that the cost of the function calls themselves is not negligible.
- Modern processors can often execute the operations themselves very fast,
- but the function call disrupts the instruction pipeline.
- For this reason the GNU C Library provides optimizations for many of
- the frequently-used math functions. When GNU CC is used and the user
- activates the optimizer, several new inline functions and macros are
- defined. These new functions and macros have the same names as the
- library functions and so are used instead of the latter. In the case of
- inline functions the compiler will decide whether it is reasonable to
- use them, and this decision is usually correct.
- This means that no calls to the library functions may be necessary,
- and can increase the speed of generated code significantly. The
- drawback is that code size will increase, and the increase is not always
- negligible.
- There are two kinds of inline functions: those that give the same
- result as the library functions and others that might not set ‘errno’
- and might have a reduced precision and/or argument range in comparison
- with the library functions. The latter inline functions are only
- available if the flag ‘-ffast-math’ is given to GNU CC.
- Not all hardware implements the entire IEEE 754 standard, and even if
- it does there may be a substantial performance penalty for using some of
- its features. For example, enabling traps on some processors forces the
- FPU to run un-pipelined, which can more than double calculation time.
- File: libc.info, Node: Arithmetic, Next: Bit Manipulation, Prev: Mathematics, Up: Top
- 20 Arithmetic Functions
- ***********************
- This chapter contains information about functions for doing basic
- arithmetic operations, such as splitting a float into its integer and
- fractional parts or retrieving the imaginary part of a complex value.
- These functions are declared in the header files ‘math.h’ and
- ‘complex.h’.
- * Menu:
- * Integers:: Basic integer types and concepts
- * Integer Division:: Integer division with guaranteed rounding.
- * Floating Point Numbers:: Basic concepts. IEEE 754.
- * Floating Point Classes:: The five kinds of floating-point number.
- * Floating Point Errors:: When something goes wrong in a calculation.
- * Rounding:: Controlling how results are rounded.
- * Control Functions:: Saving and restoring the FPU's state.
- * Arithmetic Functions:: Fundamental operations provided by the library.
- * Complex Numbers:: The types. Writing complex constants.
- * Operations on Complex:: Projection, conjugation, decomposition.
- * Parsing of Numbers:: Converting strings to numbers.
- * Printing of Floats:: Converting floating-point numbers to strings.
- * System V Number Conversion:: An archaic way to convert numbers to strings.
- File: libc.info, Node: Integers, Next: Integer Division, Up: Arithmetic
- 20.1 Integers
- =============
- The C language defines several integer data types: integer, short
- integer, long integer, and character, all in both signed and unsigned
- varieties. The GNU C compiler extends the language to contain long long
- integers as well.
- The C integer types were intended to allow code to be portable among
- machines with different inherent data sizes (word sizes), so each type
- may have different ranges on different machines. The problem with this
- is that a program often needs to be written for a particular range of
- integers, and sometimes must be written for a particular size of
- storage, regardless of what machine the program runs on.
- To address this problem, the GNU C Library contains C type
- definitions you can use to declare integers that meet your exact needs.
- Because the GNU C Library header files are customized to a specific
- machine, your program source code doesn't have to be.
- These ‘typedef’s are in ‘stdint.h’.
- If you require that an integer be represented in exactly N bits, use
- one of the following types, with the obvious mapping to bit size and
- signedness:
- • int8_t
- • int16_t
- • int32_t
- • int64_t
- • uint8_t
- • uint16_t
- • uint32_t
- • uint64_t
- If your C compiler and target machine do not allow integers of a
- certain size, the corresponding above type does not exist.
- If you don't need a specific storage size, but want the smallest data
- structure with _at least_ N bits, use one of these:
- • int_least8_t
- • int_least16_t
- • int_least32_t
- • int_least64_t
- • uint_least8_t
- • uint_least16_t
- • uint_least32_t
- • uint_least64_t
- If you don't need a specific storage size, but want the data
- structure that allows the fastest access while having at least N bits
- (and among data structures with the same access speed, the smallest
- one), use one of these:
- • int_fast8_t
- • int_fast16_t
- • int_fast32_t
- • int_fast64_t
- • uint_fast8_t
- • uint_fast16_t
- • uint_fast32_t
- • uint_fast64_t
- If you want an integer with the widest range possible on the platform
- on which it is being used, use one of the following. If you use these,
- you should write code that takes into account the variable size and
- range of the integer.
- • intmax_t
- • uintmax_t
- The GNU C Library also provides macros that tell you the maximum and
- minimum possible values for each integer data type. The macro names
- follow these examples: ‘INT32_MAX’, ‘UINT8_MAX’, ‘INT_FAST32_MIN’,
- ‘INT_LEAST64_MIN’, ‘UINTMAX_MAX’, ‘INTMAX_MAX’, ‘INTMAX_MIN’. Note that
- there are no macros for unsigned integer minima. These are always zero.
- Similarly, there are macros such as ‘INTMAX_WIDTH’ for the width of
- these types. Those macros for integer type widths come from TS
- 18661-1:2014.
- There are similar macros for use with C's built in integer types
- which should come with your C compiler. These are described in *note
- Data Type Measurements::.
- Don't forget you can use the C ‘sizeof’ function with any of these
- data types to get the number of bytes of storage each uses.
- File: libc.info, Node: Integer Division, Next: Floating Point Numbers, Prev: Integers, Up: Arithmetic
- 20.2 Integer Division
- =====================
- This section describes functions for performing integer division. These
- functions are redundant when GNU CC is used, because in GNU C the ‘/’
- operator always rounds towards zero. But in other C implementations,
- ‘/’ may round differently with negative arguments. ‘div’ and ‘ldiv’ are
- useful because they specify how to round the quotient: towards zero.
- The remainder has the same sign as the numerator.
- These functions are specified to return a result R such that the
- value ‘R.quot*DENOMINATOR + R.rem’ equals NUMERATOR.
- To use these facilities, you should include the header file
- ‘stdlib.h’ in your program.
- -- Data Type: div_t
- This is a structure type used to hold the result returned by the
- ‘div’ function. It has the following members:
- ‘int quot’
- The quotient from the division.
- ‘int rem’
- The remainder from the division.
- -- Function: div_t div (int NUMERATOR, int DENOMINATOR)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- The function ‘div’ computes the quotient and remainder from the
- division of NUMERATOR by DENOMINATOR, returning the result in a
- structure of type ‘div_t’.
- If the result cannot be represented (as in a division by zero), the
- behavior is undefined.
- Here is an example, albeit not a very useful one.
- div_t result;
- result = div (20, -6);
- Now ‘result.quot’ is ‘-3’ and ‘result.rem’ is ‘2’.
- -- Data Type: ldiv_t
- This is a structure type used to hold the result returned by the
- ‘ldiv’ function. It has the following members:
- ‘long int quot’
- The quotient from the division.
- ‘long int rem’
- The remainder from the division.
- (This is identical to ‘div_t’ except that the components are of
- type ‘long int’ rather than ‘int’.)
- -- Function: ldiv_t ldiv (long int NUMERATOR, long int DENOMINATOR)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- The ‘ldiv’ function is similar to ‘div’, except that the arguments
- are of type ‘long int’ and the result is returned as a structure of
- type ‘ldiv_t’.
- -- Data Type: lldiv_t
- This is a structure type used to hold the result returned by the
- ‘lldiv’ function. It has the following members:
- ‘long long int quot’
- The quotient from the division.
- ‘long long int rem’
- The remainder from the division.
- (This is identical to ‘div_t’ except that the components are of
- type ‘long long int’ rather than ‘int’.)
- -- Function: lldiv_t lldiv (long long int NUMERATOR, long long int
- DENOMINATOR)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- The ‘lldiv’ function is like the ‘div’ function, but the arguments
- are of type ‘long long int’ and the result is returned as a
- structure of type ‘lldiv_t’.
- The ‘lldiv’ function was added in ISO C99.
- -- Data Type: imaxdiv_t
- This is a structure type used to hold the result returned by the
- ‘imaxdiv’ function. It has the following members:
- ‘intmax_t quot’
- The quotient from the division.
- ‘intmax_t rem’
- The remainder from the division.
- (This is identical to ‘div_t’ except that the components are of
- type ‘intmax_t’ rather than ‘int’.)
- See *note Integers:: for a description of the ‘intmax_t’ type.
- -- Function: imaxdiv_t imaxdiv (intmax_t NUMERATOR, intmax_t
- DENOMINATOR)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- The ‘imaxdiv’ function is like the ‘div’ function, but the
- arguments are of type ‘intmax_t’ and the result is returned as a
- structure of type ‘imaxdiv_t’.
- See *note Integers:: for a description of the ‘intmax_t’ type.
- The ‘imaxdiv’ function was added in ISO C99.
- File: libc.info, Node: Floating Point Numbers, Next: Floating Point Classes, Prev: Integer Division, Up: Arithmetic
- 20.3 Floating Point Numbers
- ===========================
- Most computer hardware has support for two different kinds of numbers:
- integers (...-3, -2, -1, 0, 1, 2, 3...) and floating-point numbers.
- Floating-point numbers have three parts: the “mantissa”, the “exponent”,
- and the “sign bit”. The real number represented by a floating-point
- value is given by (s ? -1 : 1) * 2^e * M where s is the sign bit, e the
- exponent, and M the mantissa. *Note Floating Point Concepts::, for
- details. (It is possible to have a different “base” for the exponent,
- but all modern hardware uses 2.)
- Floating-point numbers can represent a finite subset of the real
- numbers. While this subset is large enough for most purposes, it is
- important to remember that the only reals that can be represented
- exactly are rational numbers that have a terminating binary expansion
- shorter than the width of the mantissa. Even simple fractions such as
- 1/5 can only be approximated by floating point.
- Mathematical operations and functions frequently need to produce
- values that are not representable. Often these values can be
- approximated closely enough for practical purposes, but sometimes they
- can't. Historically there was no way to tell when the results of a
- calculation were inaccurate. Modern computers implement the IEEE 754
- standard for numerical computations, which defines a framework for
- indicating to the program when the results of calculation are not
- trustworthy. This framework consists of a set of “exceptions” that
- indicate why a result could not be represented, and the special values
- “infinity” and “not a number” (NaN).
- File: libc.info, Node: Floating Point Classes, Next: Floating Point Errors, Prev: Floating Point Numbers, Up: Arithmetic
- 20.4 Floating-Point Number Classification Functions
- ===================================================
- ISO C99 defines macros that let you determine what sort of
- floating-point number a variable holds.
- -- Macro: int fpclassify (_float-type_ X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This is a generic macro which works on all floating-point types and
- which returns a value of type ‘int’. The possible values are:
- ‘FP_NAN’
- The floating-point number X is "Not a Number" (*note Infinity
- and NaN::)
- ‘FP_INFINITE’
- The value of X is either plus or minus infinity (*note
- Infinity and NaN::)
- ‘FP_ZERO’
- The value of X is zero. In floating-point formats like
- IEEE 754, where zero can be signed, this value is also
- returned if X is negative zero.
- ‘FP_SUBNORMAL’
- Numbers whose absolute value is too small to be represented in
- the normal format are represented in an alternate,
- “denormalized” format (*note Floating Point Concepts::). This
- format is less precise but can represent values closer to
- zero. ‘fpclassify’ returns this value for values of X in this
- alternate format.
- ‘FP_NORMAL’
- This value is returned for all other values of X. It
- indicates that there is nothing special about the number.
- ‘fpclassify’ is most useful if more than one property of a number
- must be tested. There are more specific macros which only test one
- property at a time. Generally these macros execute faster than
- ‘fpclassify’, since there is special hardware support for them. You
- should therefore use the specific macros whenever possible.
- -- Macro: int iscanonical (_float-type_ X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- In some floating-point formats, some values have canonical
- (preferred) and noncanonical encodings (for IEEE interchange binary
- formats, all encodings are canonical). This macro returns a
- nonzero value if X has a canonical encoding. It is from TS
- 18661-1:2014.
- Note that some formats have multiple encodings of a value which are
- all equally canonical; ‘iscanonical’ returns a nonzero value for
- all such encodings. Also, formats may have encodings that do not
- correspond to any valid value of the type. In ISO C terms these
- are “trap representations”; in the GNU C Library, ‘iscanonical’
- returns zero for such encodings.
- -- Macro: int isfinite (_float-type_ X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This macro returns a nonzero value if X is finite: not plus or
- minus infinity, and not NaN. It is equivalent to
- (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE)
- ‘isfinite’ is implemented as a macro which accepts any
- floating-point type.
- -- Macro: int isnormal (_float-type_ X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This macro returns a nonzero value if X is finite and normalized.
- It is equivalent to
- (fpclassify (x) == FP_NORMAL)
- -- Macro: int isnan (_float-type_ X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This macro returns a nonzero value if X is NaN. It is equivalent to
- (fpclassify (x) == FP_NAN)
- -- Macro: int issignaling (_float-type_ X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This macro returns a nonzero value if X is a signaling NaN (sNaN).
- It is from TS 18661-1:2014.
- -- Macro: int issubnormal (_float-type_ X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This macro returns a nonzero value if X is subnormal. It is from
- TS 18661-1:2014.
- -- Macro: int iszero (_float-type_ X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This macro returns a nonzero value if X is zero. It is from TS
- 18661-1:2014.
- Another set of floating-point classification functions was provided
- by BSD. The GNU C Library also supports these functions; however, we
- recommend that you use the ISO C99 macros in new code. Those are
- standard and will be available more widely. Also, since they are
- macros, you do not have to worry about the type of their argument.
- -- Function: int isinf (double X)
- -- Function: int isinff (float X)
- -- Function: int isinfl (long double X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function returns ‘-1’ if X represents negative infinity, ‘1’
- if X represents positive infinity, and ‘0’ otherwise.
- -- Function: int isnan (double X)
- -- Function: int isnanf (float X)
- -- Function: int isnanl (long double X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function returns a nonzero value if X is a "not a number"
- value, and zero otherwise.
- *NB:* The ‘isnan’ macro defined by ISO C99 overrides the BSD
- function. This is normally not a problem, because the two routines
- behave identically. However, if you really need to get the BSD
- function for some reason, you can write
- (isnan) (x)
- -- Function: int finite (double X)
- -- Function: int finitef (float X)
- -- Function: int finitel (long double X)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function returns a nonzero value if X is neither infinite nor
- a "not a number" value, and zero otherwise.
- *Portability Note:* The functions listed in this section are BSD
- extensions.
- File: libc.info, Node: Floating Point Errors, Next: Rounding, Prev: Floating Point Classes, Up: Arithmetic
- 20.5 Errors in Floating-Point Calculations
- ==========================================
- * Menu:
- * FP Exceptions:: IEEE 754 math exceptions and how to detect them.
- * Infinity and NaN:: Special values returned by calculations.
- * Status bit operations:: Checking for exceptions after the fact.
- * Math Error Reporting:: How the math functions report errors.
- File: libc.info, Node: FP Exceptions, Next: Infinity and NaN, Up: Floating Point Errors
- 20.5.1 FP Exceptions
- --------------------
- The IEEE 754 standard defines five “exceptions” that can occur during a
- calculation. Each corresponds to a particular sort of error, such as
- overflow.
- When exceptions occur (when exceptions are “raised”, in the language
- of the standard), one of two things can happen. By default the
- exception is simply noted in the floating-point “status word”, and the
- program continues as if nothing had happened. The operation produces a
- default value, which depends on the exception (see the table below).
- Your program can check the status word to find out which exceptions
- happened.
- Alternatively, you can enable “traps” for exceptions. In that case,
- when an exception is raised, your program will receive the ‘SIGFPE’
- signal. The default action for this signal is to terminate the program.
- *Note Signal Handling::, for how you can change the effect of the
- signal.
- The exceptions defined in IEEE 754 are:
- ‘Invalid Operation’
- This exception is raised if the given operands are invalid for the
- operation to be performed. Examples are (see IEEE 754, section 7):
- 1. Addition or subtraction: oo - oo. (But oo + oo = oo).
- 2. Multiplication: 0 * oo.
- 3. Division: 0/0 or oo/oo.
- 4. Remainder: x REM y, where y is zero or x is infinite.
- 5. Square root if the operand is less than zero. More generally,
- any mathematical function evaluated outside its domain
- produces this exception.
- 6. Conversion of a floating-point number to an integer or decimal
- string, when the number cannot be represented in the target
- format (due to overflow, infinity, or NaN).
- 7. Conversion of an unrecognizable input string.
- 8. Comparison via predicates involving < or >, when one or other
- of the operands is NaN. You can prevent this exception by
- using the unordered comparison functions instead; see *note FP
- Comparison Functions::.
- If the exception does not trap, the result of the operation is NaN.
- ‘Division by Zero’
- This exception is raised when a finite nonzero number is divided by
- zero. If no trap occurs the result is either +oo or -oo, depending
- on the signs of the operands.
- ‘Overflow’
- This exception is raised whenever the result cannot be represented
- as a finite value in the precision format of the destination. If
- no trap occurs the result depends on the sign of the intermediate
- result and the current rounding mode (IEEE 754, section 7.3):
- 1. Round to nearest carries all overflows to oo with the sign of
- the intermediate result.
- 2. Round toward 0 carries all overflows to the largest
- representable finite number with the sign of the intermediate
- result.
- 3. Round toward -oo carries positive overflows to the largest
- representable finite number and negative overflows to -oo.
- 4. Round toward oo carries negative overflows to the most
- negative representable finite number and positive overflows to
- oo.
- Whenever the overflow exception is raised, the inexact exception is
- also raised.
- ‘Underflow’
- The underflow exception is raised when an intermediate result is
- too small to be calculated accurately, or if the operation's result
- rounded to the destination precision is too small to be normalized.
- When no trap is installed for the underflow exception, underflow is
- signaled (via the underflow flag) only when both tininess and loss
- of accuracy have been detected. If no trap handler is installed
- the operation continues with an imprecise small value, or zero if
- the destination precision cannot hold the small exact result.
- ‘Inexact’
- This exception is signalled if a rounded result is not exact (such
- as when calculating the square root of two) or a result overflows
- without an overflow trap.
- File: libc.info, Node: Infinity and NaN, Next: Status bit operations, Prev: FP Exceptions, Up: Floating Point Errors
- 20.5.2 Infinity and NaN
- -----------------------
- IEEE 754 floating point numbers can represent positive or negative
- infinity, and “NaN” (not a number). These three values arise from
- calculations whose result is undefined or cannot be represented
- accurately. You can also deliberately set a floating-point variable to
- any of them, which is sometimes useful. Some examples of calculations
- that produce infinity or NaN:
- 1/0 = oo
- log (0) = -oo
- sqrt (-1) = NaN
- When a calculation produces any of these values, an exception also
- occurs; see *note FP Exceptions::.
- The basic operations and math functions all accept infinity and NaN
- and produce sensible output. Infinities propagate through calculations
- as one would expect: for example, 2 + oo = oo, 4/oo = 0, atan (oo) =
- pi/2. NaN, on the other hand, infects any calculation that involves it.
- Unless the calculation would produce the same result no matter what real
- value replaced NaN, the result is NaN.
- In comparison operations, positive infinity is larger than all values
- except itself and NaN, and negative infinity is smaller than all values
- except itself and NaN. NaN is “unordered”: it is not equal to, greater
- than, or less than anything, _including itself_. ‘x == x’ is false if
- the value of ‘x’ is NaN. You can use this to test whether a value is NaN
- or not, but the recommended way to test for NaN is with the ‘isnan’
- function (*note Floating Point Classes::). In addition, ‘<’, ‘>’, ‘<=’,
- and ‘>=’ will raise an exception when applied to NaNs.
- ‘math.h’ defines macros that allow you to explicitly set a variable
- to infinity or NaN.
- -- Macro: float INFINITY
- An expression representing positive infinity. It is equal to the
- value produced by mathematical operations like ‘1.0 / 0.0’.
- ‘-INFINITY’ represents negative infinity.
- You can test whether a floating-point value is infinite by
- comparing it to this macro. However, this is not recommended; you
- should use the ‘isfinite’ macro instead. *Note Floating Point
- Classes::.
- This macro was introduced in the ISO C99 standard.
- -- Macro: float NAN
- An expression representing a value which is "not a number". This
- macro is a GNU extension, available only on machines that support
- the "not a number" value--that is to say, on all machines that
- support IEEE floating point.
- You can use ‘#ifdef NAN’ to test whether the machine supports NaN.
- (Of course, you must arrange for GNU extensions to be visible, such
- as by defining ‘_GNU_SOURCE’, and then you must include ‘math.h’.)
- -- Macro: float SNANF
- -- Macro: double SNAN
- -- Macro: long double SNANL
- -- Macro: _FloatN SNANFN
- -- Macro: _FloatNx SNANFNx
- These macros, defined by TS 18661-1:2014 and TS 18661-3:2015, are
- constant expressions for signaling NaNs.
- -- Macro: int FE_SNANS_ALWAYS_SIGNAL
- This macro, defined by TS 18661-1:2014, is defined to ‘1’ in
- ‘fenv.h’ to indicate that functions and operations with signaling
- NaN inputs and floating-point results always raise the invalid
- exception and return a quiet NaN, even in cases (such as ‘fmax’,
- ‘hypot’ and ‘pow’) where a quiet NaN input can produce a non-NaN
- result. Because some compiler optimizations may not handle
- signaling NaNs correctly, this macro is only defined if compiler
- support for signaling NaNs is enabled. That support can be enabled
- with the GCC option ‘-fsignaling-nans’.
- IEEE 754 also allows for another unusual value: negative zero. This
- value is produced when you divide a positive number by negative
- infinity, or when a negative result is smaller than the limits of
- representation.
- File: libc.info, Node: Status bit operations, Next: Math Error Reporting, Prev: Infinity and NaN, Up: Floating Point Errors
- 20.5.3 Examining the FPU status word
- ------------------------------------
- ISO C99 defines functions to query and manipulate the floating-point
- status word. You can use these functions to check for untrapped
- exceptions when it's convenient, rather than worrying about them in the
- middle of a calculation.
- These constants represent the various IEEE 754 exceptions. Not all
- FPUs report all the different exceptions. Each constant is defined if
- and only if the FPU you are compiling for supports that exception, so
- you can test for FPU support with ‘#ifdef’. They are defined in
- ‘fenv.h’.
- ‘FE_INEXACT’
- The inexact exception.
- ‘FE_DIVBYZERO’
- The divide by zero exception.
- ‘FE_UNDERFLOW’
- The underflow exception.
- ‘FE_OVERFLOW’
- The overflow exception.
- ‘FE_INVALID’
- The invalid exception.
- The macro ‘FE_ALL_EXCEPT’ is the bitwise OR of all exception macros
- which are supported by the FP implementation.
- These functions allow you to clear exception flags, test for
- exceptions, and save and restore the set of exceptions flagged.
- -- Function: int feclearexcept (int EXCEPTS)
- Preliminary: | MT-Safe | AS-Safe !posix | AC-Safe !posix | *Note
- POSIX Safety Concepts::.
- This function clears all of the supported exception flags indicated
- by EXCEPTS.
- The function returns zero in case the operation was successful, a
- non-zero value otherwise.
- -- Function: int feraiseexcept (int EXCEPTS)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function raises the supported exceptions indicated by EXCEPTS.
- If more than one exception bit in EXCEPTS is set the order in which
- the exceptions are raised is undefined except that overflow
- (‘FE_OVERFLOW’) or underflow (‘FE_UNDERFLOW’) are raised before
- inexact (‘FE_INEXACT’). Whether for overflow or underflow the
- inexact exception is also raised is also implementation dependent.
- The function returns zero in case the operation was successful, a
- non-zero value otherwise.
- -- Function: int fesetexcept (int EXCEPTS)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function sets the supported exception flags indicated by
- EXCEPTS, like ‘feraiseexcept’, but without causing enabled traps to
- be taken. ‘fesetexcept’ is from TS 18661-1:2014.
- The function returns zero in case the operation was successful, a
- non-zero value otherwise.
- -- Function: int fetestexcept (int EXCEPTS)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- Test whether the exception flags indicated by the parameter EXCEPT
- are currently set. If any of them are, a nonzero value is returned
- which specifies which exceptions are set. Otherwise the result is
- zero.
- To understand these functions, imagine that the status word is an
- integer variable named STATUS. ‘feclearexcept’ is then equivalent to
- ‘status &= ~excepts’ and ‘fetestexcept’ is equivalent to ‘(status &
- excepts)’. The actual implementation may be very different, of course.
- Exception flags are only cleared when the program explicitly requests
- it, by calling ‘feclearexcept’. If you want to check for exceptions
- from a set of calculations, you should clear all the flags first. Here
- is a simple example of the way to use ‘fetestexcept’:
- {
- double f;
- int raised;
- feclearexcept (FE_ALL_EXCEPT);
- f = compute ();
- raised = fetestexcept (FE_OVERFLOW | FE_INVALID);
- if (raised & FE_OVERFLOW) { /* ... */ }
- if (raised & FE_INVALID) { /* ... */ }
- /* ... */
- }
- You cannot explicitly set bits in the status word. You can, however,
- save the entire status word and restore it later. This is done with the
- following functions:
- -- Function: int fegetexceptflag (fexcept_t *FLAGP, int EXCEPTS)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function stores in the variable pointed to by FLAGP an
- implementation-defined value representing the current setting of
- the exception flags indicated by EXCEPTS.
- The function returns zero in case the operation was successful, a
- non-zero value otherwise.
- -- Function: int fesetexceptflag (const fexcept_t *FLAGP, int EXCEPTS)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- This function restores the flags for the exceptions indicated by
- EXCEPTS to the values stored in the variable pointed to by FLAGP.
- The function returns zero in case the operation was successful, a
- non-zero value otherwise.
- Note that the value stored in ‘fexcept_t’ bears no resemblance to the
- bit mask returned by ‘fetestexcept’. The type may not even be an
- integer. Do not attempt to modify an ‘fexcept_t’ variable.
- -- Function: int fetestexceptflag (const fexcept_t *FLAGP, int EXCEPTS)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- Test whether the exception flags indicated by the parameter EXCEPTS
- are set in the variable pointed to by FLAGP. If any of them are, a
- nonzero value is returned which specifies which exceptions are set.
- Otherwise the result is zero. ‘fetestexceptflag’ is from TS
- 18661-1:2014.
- File: libc.info, Node: Math Error Reporting, Prev: Status bit operations, Up: Floating Point Errors
- 20.5.4 Error Reporting by Mathematical Functions
- ------------------------------------------------
- Many of the math functions are defined only over a subset of the real or
- complex numbers. Even if they are mathematically defined, their result
- may be larger or smaller than the range representable by their return
- type without loss of accuracy. These are known as “domain errors”,
- “overflows”, and “underflows”, respectively. Math functions do several
- things when one of these errors occurs. In this manual we will refer to
- the complete response as “signalling” a domain error, overflow, or
- underflow.
- When a math function suffers a domain error, it raises the invalid
- exception and returns NaN. It also sets ‘errno’ to ‘EDOM’; this is for
- compatibility with old systems that do not support IEEE 754 exception
- handling. Likewise, when overflow occurs, math functions raise the
- overflow exception and, in the default rounding mode, return oo or -oo
- as appropriate (in other rounding modes, the largest finite value of the
- appropriate sign is returned when appropriate for that rounding mode).
- They also set ‘errno’ to ‘ERANGE’ if returning oo or -oo; ‘errno’ may or
- may not be set to ‘ERANGE’ when a finite value is returned on overflow.
- When underflow occurs, the underflow exception is raised, and zero
- (appropriately signed) or a subnormal value, as appropriate for the
- mathematical result of the function and the rounding mode, is returned.
- ‘errno’ may be set to ‘ERANGE’, but this is not guaranteed; it is
- intended that the GNU C Library should set it when the underflow is to
- an appropriately signed zero, but not necessarily for other underflows.
- When a math function has an argument that is a signaling NaN, the GNU
- C Library does not consider this a domain error, so ‘errno’ is
- unchanged, but the invalid exception is still raised (except for a few
- functions that are specified to handle signaling NaNs differently).
- Some of the math functions are defined mathematically to result in a
- complex value over parts of their domains. The most familiar example of
- this is taking the square root of a negative number. The complex math
- functions, such as ‘csqrt’, will return the appropriate complex value in
- this case. The real-valued functions, such as ‘sqrt’, will signal a
- domain error.
- Some older hardware does not support infinities. On that hardware,
- overflows instead return a particular very large number (usually the
- largest representable number). ‘math.h’ defines macros you can use to
- test for overflow on both old and new hardware.
- -- Macro: double HUGE_VAL
- -- Macro: float HUGE_VALF
- -- Macro: long double HUGE_VALL
- -- Macro: _FloatN HUGE_VAL_FN
- -- Macro: _FloatNx HUGE_VAL_FNx
- An expression representing a particular very large number. On
- machines that use IEEE 754 floating point format, ‘HUGE_VAL’ is
- infinity. On other machines, it's typically the largest positive
- number that can be represented.
- Mathematical functions return the appropriately typed version of
- ‘HUGE_VAL’ or ‘−HUGE_VAL’ when the result is too large to be
- represented.
- File: libc.info, Node: Rounding, Next: Control Functions, Prev: Floating Point Errors, Up: Arithmetic
- 20.6 Rounding Modes
- ===================
- Floating-point calculations are carried out internally with extra
- precision, and then rounded to fit into the destination type. This
- ensures that results are as precise as the input data. IEEE 754 defines
- four possible rounding modes:
- Round to nearest.
- This is the default mode. It should be used unless there is a
- specific need for one of the others. In this mode results are
- rounded to the nearest representable value. If the result is
- midway between two representable values, the even representable is
- chosen. “Even” here means the lowest-order bit is zero. This
- rounding mode prevents statistical bias and guarantees numeric
- stability: round-off errors in a lengthy calculation will remain
- smaller than half of ‘FLT_EPSILON’.
- Round toward plus Infinity.
- All results are rounded to the smallest representable value which
- is greater than the result.
- Round toward minus Infinity.
- All results are rounded to the largest representable value which is
- less than the result.
- Round toward zero.
- All results are rounded to the largest representable value whose
- magnitude is less than that of the result. In other words, if the
- result is negative it is rounded up; if it is positive, it is
- rounded down.
- ‘fenv.h’ defines constants which you can use to refer to the various
- rounding modes. Each one will be defined if and only if the FPU
- supports the corresponding rounding mode.
- ‘FE_TONEAREST’
- Round to nearest.
- ‘FE_UPWARD’
- Round toward +oo.
- ‘FE_DOWNWARD’
- Round toward -oo.
- ‘FE_TOWARDZERO’
- Round toward zero.
- Underflow is an unusual case. Normally, IEEE 754 floating point
- numbers are always normalized (*note Floating Point Concepts::).
- Numbers smaller than 2^r (where r is the minimum exponent,
- ‘FLT_MIN_RADIX-1’ for FLOAT) cannot be represented as normalized
- numbers. Rounding all such numbers to zero or 2^r would cause some
- algorithms to fail at 0. Therefore, they are left in denormalized form.
- That produces loss of precision, since some bits of the mantissa are
- stolen to indicate the decimal point.
- If a result is too small to be represented as a denormalized number,
- it is rounded to zero. However, the sign of the result is preserved; if
- the calculation was negative, the result is “negative zero”. Negative
- zero can also result from some operations on infinity, such as 4/-oo.
- At any time, one of the above four rounding modes is selected. You
- can find out which one with this function:
- -- Function: int fegetround (void)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- Returns the currently selected rounding mode, represented by one of
- the values of the defined rounding mode macros.
- To change the rounding mode, use this function:
- -- Function: int fesetround (int ROUND)
- Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
- Concepts::.
- Changes the currently selected rounding mode to ROUND. If ROUND
- does not correspond to one of the supported rounding modes nothing
- is changed. ‘fesetround’ returns zero if it changed the rounding
- mode, or a nonzero value if the mode is not supported.
- You should avoid changing the rounding mode if possible. It can be
- an expensive operation; also, some hardware requires you to compile your
- program differently for it to work. The resulting code may run slower.
- See your compiler documentation for details.
|