⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s_erfcl.s

📁 glibc 库, 不仅可以学习使用库函数,还可以学习函数的具体实现,是提高功力的好资料
💻 S
📖 第 1 页 / 共 5 页
字号:
data8 0x9AEF5110C6885352, 0x0000BFD3 //A7 = -6.88048865490621757799e-14Ldata8 0xED988D52189CE6A3, 0x00003FCD //A8 = +1.64865278639132278935e-15Ldata8 0xB6063CECD8012B6D, 0x0000BFC8 //A9 = -3.94702428606368525374e-17Ldata8 0x8B541EB15E79CEEC, 0x00003FC3 //A10 = +9.44127272399408815784e-19Ldata8 0xD51A136D8C75BC25, 0x0000BFBD //A11 = -2.25630369561137931232e-20Ldata8 0xA2C1C5E19CC79E6F, 0x00003FB8 //A12 = +5.38517493921589837361e-22Ldata8 0xF86F9772306F56C1, 0x0000BFB2 //A13 = -1.28438352359240135735e-23Ldata8 0xC32F6FEEDE86528E, 0x00003FAD //A14 = +3.15338862172962186458e-25Ldata8 0x9534ED189744D7D4, 0x0000BFA8 //A15 = -7.53301543611470014315e-27L// Pol22 data8 0xCBA0A2DB94A2C494, 0x00003FEF //A0 = +2.42742878212752702946e-05Ldata8 0x84C089154A49E0E8, 0x0000BFF3 //A1 = -2.53204520651046300034e-04Ldata8 0xABF5665BD0D8B0CD, 0x00003FED //A2 = +5.12476542947092361490e-06Ldata8 0xDEA1C518E3EEE872, 0x0000BFE7 //A3 = -1.03671063536324831083e-07Ldata8 0x900B77F271559AE8, 0x00003FE2 //A4 = +2.09612770408581408652e-09Ldata8 0xBA4C74A262BE3E4E, 0x0000BFDC //A5 = -4.23594098489216166935e-11Ldata8 0xF0D1680FCC1EAF97, 0x00003FD6 //A6 = +8.55557381760467917779e-13Ldata8 0x9B8F8E033BB83A24, 0x0000BFD1 //A7 = -1.72707138247091685914e-14Ldata8 0xC8DCA6A691DB8335, 0x00003FCB //A8 = +3.48439884388851942939e-16Ldata8 0x819A6CB9CEA5E9BD, 0x0000BFC6 //A9 = -7.02580471688245511753e-18Ldata8 0xA726B4F622585BEA, 0x00003FC0 //A10 = +1.41582572516648501043e-19Ldata8 0xD7727648A4095986, 0x0000BFBA //A11 = -2.85141885626054217632e-21Ldata8 0x8AB627E09CF45997, 0x00003FB5 //A12 = +5.73697507862703019314e-23Ldata8 0xB28C15C117CC604F, 0x0000BFAF //A13 = -1.15383428132352407085e-24Ldata8 0xECB8428626DA072C, 0x00003FA9 //A14 = +2.39025879246942839796e-26Ldata8 0x98B731BCFA2CE2B2, 0x0000BFA4 //A15 = -4.81885474332093262902e-28L// Pol23 data8 0xC6D013811314D31B, 0x00003FED //A0 = +5.92508308918577687876e-06Ldata8 0xBBF3057B8DBACBCF, 0x0000BFF2 //A1 = -1.79242422493281965934e-04Ldata8 0xCCADECA501162313, 0x00003FEC //A2 = +3.04996061562356504918e-06Ldata8 0xDED1FDBE8CCAF3DB, 0x0000BFE6 //A3 = -5.18793887648024117154e-08Ldata8 0xF27B74EDDCA65859, 0x00003FE0 //A4 = +8.82145297317787820675e-10Ldata8 0x83E4415687F01A0C, 0x0000BFDB //A5 = -1.49943414247603665601e-11Ldata8 0x8F6CB350861CE446, 0x00003FD5 //A6 = +2.54773288906376920377e-13Ldata8 0x9BE8456A30CBFC02, 0x0000BFCF //A7 = -4.32729710913845745148e-15Ldata8 0xA9694F7E1033977D, 0x00003FC9 //A8 = +7.34704698157502347441e-17Ldata8 0xB8035A3D5AF82D85, 0x0000BFC3 //A9 = -1.24692123826025468001e-18Ldata8 0xC7CB4B3ACB905FDA, 0x00003FBD //A10 = +2.11540249352095943317e-20Ldata8 0xD8D70AEB2E58D729, 0x0000BFB7 //A11 = -3.58731705184186608576e-22Ldata8 0xEB27A61B1D5C7697, 0x00003FB1 //A12 = +6.07861113430709162243e-24Ldata8 0xFEF9ED74D4F4C9B0, 0x0000BFAB //A13 = -1.02984099170876754831e-25Ldata8 0x8E6F410068C12043, 0x00003FA6 //A14 = +1.79777721804459361762e-27Ldata8 0x9AE2F6705481630E, 0x0000BFA0 //A15 = -3.05459905177379058768e-29L// Pol24 data8 0xD2D858D5B01C9434, 0x00003FEE //A0 = +1.25673476165670766128e-05Ldata8 0x8505330F8B4FDE49, 0x0000BFF2 //A1 = -1.26858053564784963985e-04Ldata8 0xF39171C8B1D418C2, 0x00003FEB //A2 = +1.81472407620770441249e-06Ldata8 0xDEF065C3D7BFD26E, 0x0000BFE5 //A3 = -2.59535215807652675043e-08Ldata8 0xCC0199EA6ACA630C, 0x00003FDF //A4 = +3.71085215769339916703e-10Ldata8 0xBAA25319F01ED248, 0x0000BFD9 //A5 = -5.30445960650683029105e-12Ldata8 0xAAB28A84F8CFE4D1, 0x00003FD3 //A6 = +7.58048850973457592162e-14Ldata8 0x9C14B931AEB311A8, 0x0000BFCD //A7 = -1.08302915828084288776e-15Ldata8 0x8EADA745715A0714, 0x00003FC7 //A8 = +1.54692159263197000533e-17Ldata8 0x82643F3F722CE6B5, 0x0000BFC1 //A9 = -2.20891945694400066611e-19Ldata8 0xEE42ECDE465A99E4, 0x00003FBA //A10 = +3.15336372779307614198e-21Ldata8 0xD99FC74326ACBFC0, 0x0000BFB4 //A11 = -4.50036161691276556269e-23Ldata8 0xC6A4DCACC554911E, 0x00003FAE //A12 = +6.41853356148678957077e-25Ldata8 0xB550CEA09DA96F44, 0x0000BFA8 //A13 = -9.15410112414783078242e-27Ldata8 0xAA9149317996F32F, 0x00003FA2 //A14 = +1.34554050666508391264e-28Ldata8 0x9C3008EFE3F52F19, 0x0000BF9C //A15 = -1.92516125328592532359e-30L// Pol25 data8 0xA68E78218806283F, 0x00003FEF //A0 = +1.98550844852103406280e-05Ldata8 0xBC41423996DC8A37, 0x0000BFF1 //A1 = -8.97669395268764751516e-05Ldata8 0x90E55AE31A2F8271, 0x00003FEB //A2 = +1.07955871580069359702e-06Ldata8 0xDF022272DA4A3BEF, 0x0000BFE4 //A3 = -1.29807937275957214439e-08Ldata8 0xAB95DCBFFB0BAAB8, 0x00003FDE //A4 = +1.56056011861921437794e-10Ldata8 0x83FF2547BA9011FF, 0x0000BFD8 //A5 = -1.87578539510813332135e-12Ldata8 0xCB0C353560EEDC45, 0x00003FD1 //A6 = +2.25428217090412574481e-14Ldata8 0x9C24CEB86E76D2C5, 0x0000BFCB //A7 = -2.70866279585559299821e-16Ldata8 0xF01AFA23DDFDAE0E, 0x00003FC4 //A8 = +3.25403467375734083376e-18Ldata8 0xB892BDFBCF1D9740, 0x0000BFBE //A9 = -3.90848978133441513662e-20Ldata8 0x8DDBBF34415AAECA, 0x00003FB8 //A10 = +4.69370027479731756829e-22Ldata8 0xDA04170D07458C3B, 0x0000BFB1 //A11 = -5.63558091177482043435e-24Ldata8 0xA76F391095A9563A, 0x00003FAB //A12 = +6.76262416498584003290e-26Ldata8 0x8098FA125C18D8DB, 0x0000BFA5 //A13 = -8.11564737276592661642e-28Ldata8 0xCB9E4D5C08923227, 0x00003F9E //A14 = +1.00391606269366059664e-29Ldata8 0x9CEC3BF7A0BE2CAF, 0x0000BF98 //A15 = -1.20888920108938909316e-31L// Pol26 data8 0xC17AB25E269272F7, 0x00003FEE //A0 = +1.15322640047234590651e-05Ldata8 0x85310509E633FEF2, 0x0000BFF1 //A1 = -6.35106483144690768696e-05Ldata8 0xAC5E4C4DCB2D940C, 0x00003FEA //A2 = +6.42122148740412561597e-07Ldata8 0xDF0AAD0571FFDD48, 0x0000BFE3 //A3 = -6.49136789710824396482e-09Ldata8 0x9049D8440AFD180F, 0x00003FDD //A4 = +6.56147932223174570008e-11Ldata8 0xBAA936477C5FA9D7, 0x0000BFD6 //A5 = -6.63153032879993841863e-13Ldata8 0xF17261294EAB1443, 0x00003FCF //A6 = +6.70149477756803680009e-15Ldata8 0x9C22F87C31DB007A, 0x0000BFC9 //A7 = -6.77134581402030645534e-17Ldata8 0xC9E98E633942AC12, 0x00003FC2 //A8 = +6.84105580182052870823e-19Ldata8 0x828998181309642C, 0x0000BFBC //A9 = -6.91059649300859944955e-21Ldata8 0xA8C3D4DCE1ECBAB6, 0x00003FB5 //A10 = +6.97995542988331257517e-23Ldata8 0xDA288D52CC4C351A, 0x0000BFAE //A11 = -7.04907829139578377009e-25Ldata8 0x8CEEACB790B5F374, 0x00003FA8 //A12 = +7.11526399101774993883e-27Ldata8 0xB61C8A29D98F24C0, 0x0000BFA1 //A13 = -7.18303147470398859453e-29Ldata8 0xF296F69FE45BDA7D, 0x00003F9A //A14 = +7.47537230021540031251e-31Ldata8 0x9D4B25BF6FB7234B, 0x0000BF94 //A15 = -7.57340869663212138051e-33L// Pol27 data8 0xC7772CC326D6FBB8, 0x00003FEE //A0 = +1.18890718679826004395e-05Ldata8 0xE0F9D5410565D55D, 0x0000BFF0 //A1 = -5.36384368533203585378e-05Ldata8 0x85C0BE825680E148, 0x00003FEA //A2 = +4.98268406609692971520e-07Ldata8 0x9F058A389D7BA177, 0x0000BFE3 //A3 = -4.62813885933188677790e-09Ldata8 0xBD0B751F0A6BAC7A, 0x00003FDC //A4 = +4.29838009673609430305e-11Ldata8 0xE0B6823570502E9D, 0x0000BFD5 //A5 = -3.99170340031272728535e-13Ldata8 0x858A9C52FC426D86, 0x00003FCF //A6 = +3.70651975271664045723e-15Ldata8 0x9EB4438BFDF1928D, 0x0000BFC8 //A7 = -3.44134780748056488222e-17Ldata8 0xBC968DCD8C06D74E, 0x00003FC1 //A8 = +3.19480670422195579127e-19Ldata8 0xE0133A405F782125, 0x0000BFBA //A9 = -2.96560935615546392028e-21Ldata8 0x851AFEBB70D07E79, 0x00003FB4 //A10 = +2.75255617931932536111e-23Ldata8 0x9E1E21A841BF8738, 0x0000BFAD //A11 = -2.55452923487640676799e-25Ldata8 0xBBCF2EF1C6E72327, 0x00003FA6 //A12 = +2.37048675755308004410e-27Ldata8 0xDF0D320CF12B8BCB, 0x0000BF9F //A13 = -2.19945804585962185550e-29Ldata8 0x8470A76DE5FCADD8, 0x00003F99 //A14 = +2.04056213851532266258e-31Ldata8 0x9D41C15F6A6FBB04, 0x0000BF92 //A15 = -1.89291056020108587823e-33LLOCAL_OBJECT_END(erfc_Q_table).section .textGLOBAL_LIBM_ENTRY(erfcl) { .mfi      alloc          r32 = ar.pfs, 0, 36, 4, 0      fma.s1         FR_Tmp = f1, f1, f8                   // |x|+1, if x >= 0      nop.i          0}{ .mfi      addl           GR_ad_Arg    = @ltoff(exp_table_1), gp      fms.s1         FR_Tmp1 = f1, f1, f8                   // |x|+1, if x < 0      mov            GR_rshf_2to51 = 0x4718         // begin 1.10000 2^(63+51)};;{ .mfi      ld8            GR_ad_Arg = [GR_ad_Arg]             // Point to Arg table      fcmp.ge.s1     p6,p7 = f8, f0                     // p6: x >= 0 ,p7: x<0      shl            GR_rshf_2to51 = GR_rshf_2to51,48 // end 1.10000 2^(63+51)}{ .mlx      mov            GR_rshf = 0x43e8     // begin 1.1000 2^63 for right shift      movl           GR_sig_inv_ln2 = 0xb8aa3b295c17f0bc   // signif. of 1/ln2};;{ .mfi      mov            GR_exp_2tom51 = 0xffff-51      fclass.m       p8,p0 = f8,0x07                            // p8:   x = 0      shl            GR_rshf = GR_rshf,48   // end 1.1000 2^63 for right shift}{ .mfi      nop.m          0      fnma.s1        FR_norm_x   = f8, f8, f0             //high bits for -x^2      nop.i          0         };;.pred.rel "mutex",p6,p7{ .mfi      setf.sig       FR_INV_LN2_2TO63 = GR_sig_inv_ln2    // form 1/ln2 * 2^63(p6)  fma.s1         FR_AbsArg = f1, f0, f8                  // |x|, if x >= 0      nop.i          0    }{ .mfi      setf.d         FR_RSHF_2TO51 = GR_rshf_2to51    //const 1.10 * 2^(63+51)(p7)  fms.s1         FR_AbsArg = f1, f0, f8                   // |x|, if x < 0      mov            GR_exp_mask = 0x1FFFF               // Form exponent mask};;{ .mfi      ldfe           FR_ch_dx = [GR_ad_Arg], 16      fclass.m       p10,p0 = f8, 0x21                        // p10: x = +inf      mov            GR_exp_bias = 0x0FFFF                // Set exponent bias}{ .mlx                          setf.d         FR_RSHF = GR_rshf      // Right shift const 1.1000 * 2^63      movl           GR_ERFC_XC_TB = 0x650  };;.pred.rel "mutex",p6,p7{ .mfi      setf.exp       FR_2TOM51 = GR_exp_2tom51    // 2^-51 for scaling float_N(p6)  fma.s1         FR_Tmp = FR_Tmp, FR_Tmp, f0            // (|x|+1)^2,x >=0      nop.i          0}{ .mfi      ldfpd          FR_POS_ARG_ASYMP,FR_NEG_ARG_ASYMP = [GR_ad_Arg], 16(p7)  fma.s1         FR_Tmp = FR_Tmp1, FR_Tmp1, f0           // (|x|+1)^2, x<0      mov            GR_0x1 = 0x1 };;//p8: y = 1.0, x = 0.0,quick exit { .mfi      ldfpd          FR_dx,FR_dx1 = [GR_ad_Arg], 16      fclass.m       p9,p0 = f8, 0x22                          // p9: x = -inf      nop.i          0}{ .mfb      nop.m          0      (p8)  fma.s0         f8 = f1, f1, f0     (p8)  br.ret.spnt    b0             };;{ .mfi      ldfe           FR_UnfBound = [GR_ad_Arg], 16            fclass.m       p11,p0 = f8, 0xc3                        // p11: x = nan      mov            GR_BIAS = 0x0FFFF }{ .mfi      nop.m          0      fma.s1         FR_NormX = f8,f1,f0      nop.i          0};;{ .mfi      ldfe           FR_EpsNorm = [GR_ad_Arg], 16      fmerge.s       FR_X = f8,f8      nop.i          0}{ .mfi      nop.m          0      fma.s1         FR_xsq_lo = f8, f8, FR_norm_x        // low bits for -x^2      nop.i          0};;{ .mfi      add            GR_ad_C = 0x20, GR_ad_Arg             // Point to C table      nop.f          0       add            GR_ad_T1 = 0x50, GR_ad_Arg           // Point to T1 table}{ .mfi      add            GR_ad_T2 = 0x150, GR_ad_Arg          // Point to T2 table      nop.f          0       add            GR_ERFC_XC_TB = GR_ERFC_XC_TB, GR_ad_Arg //poin.to XB_TBL};;{ .mfi      getf.exp       GR_signexp_x = FR_norm_x  // Extr. sign and exponent of x      fma.s1         FR_Tmp = FR_Tmp, FR_Tmp, f0                  // (|x|+1)^4      add            GR_ad_W1 = 0x100, GR_ad_T2           // Point to W1 table}{ .mfi      ldfe           FR_L_hi = [GR_ad_Arg],16                      // Get L_hi      nop.f          0      add            GR_ad_W2 = 0x300, GR_ad_T2           // Point to W2 table};;// p9: y = 2.0, x = -inf, quick exit{ .mfi      sub            GR_mBIAS = r0, GR_BIAS       fma.s1         FR_2 = f1, f1, f1      nop.i          0      }{ .mfb      ldfe           FR_L_lo = [GR_ad_Arg],16                      // Get L_lo(p9)  fma.s0         f8 = f1, f1, f1  (p9)  br.ret.spnt    b0 };;// p10: y = 0.0, x = +inf, quick exit{ .mfi      adds           GR_ERFC_P_TB = 0x380, GR_ERFC_XC_TB   // pointer to P_TBL      fma.s1         FR_N_signif = FR_norm_x, FR_INV_LN2_2TO63, FR_RSHF_2TO51      and            GR_exp_x = GR_signexp_x, GR_exp_mask}{ .mfb          adds           GR_ERFC_S_TB = 0x1C0, GR_ERFC_XC_TB   // pointer to S_TBL(p10) fma.s0         f8 = f0, f1, f0 (p10) br.ret.spnt    b0  };;// p12: |x| < 0.681...  ->  dx = 0.875 (else dx = 0.625 )// p11: y = x, x = nan, quic

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -