?? e_pow.s
字號:
// -0 !-odd integer +inf error 27 33 divide-by-zero// +0 -inf +inf error 27 33 divide-by-zero// -0 -inf +inf error 27 33 divide-by-zero// X zero Y positve// +0 +odd integer +0// -0 +odd integer -0// +0 !+odd integer +0// -0 !+odd integer +0// +0 +inf +0// -0 +inf +0// +0 Y NaN quiet Y invalid if Y SNaN// -0 Y NaN quiet Y invalid if Y SNaN// X one// -1 Y inf +1// -1 Y NaN quiet Y invalid if Y SNaN// +1 Y NaN +1 invalid if Y SNaN// +1 Y any else +1// X - Y not integer QNAN error 28 34 invalid// X NaN Y 0 +1 error 29 35// X NaN Y NaN quiet X invalid if X or Y SNaN// X NaN Y any else quiet X invalid if X SNaN// X !+1 Y NaN quiet Y invalid if Y SNaN// X +inf Y >0 +inf// X -inf Y >0, !odd integer +inf// X -inf Y >0, odd integer -inf// X +inf Y <0 +0// X -inf Y <0, !odd integer +0// X -inf Y <0, odd integer -0// X +inf Y =0 +1// X -inf Y =0 +1// |X|<1 Y +inf +0// |X|<1 Y -inf +inf// |X|>1 Y +inf +inf// |X|>1 Y -inf +0// X any Y =0 +1// Assembly macros//==============================================================// integer registers usedpow_GR_signexp_X = r14pow_GR_17ones = r15pow_AD_P = r16pow_GR_exp_2tom8 = r17pow_GR_sig_X = r18pow_GR_10033 = r19pow_GR_16ones = r20pow_AD_Tt = r21pow_GR_exp_X = r22pow_AD_Q = r23pow_GR_true_exp_X = r24pow_GR_y_zero = r25pow_GR_exp_Y = r26pow_AD_tbl1 = r27pow_AD_tbl2 = r28pow_GR_offset = r29pow_GR_exp_Xm1 = r30pow_GR_xneg_yodd = r31pow_GR_signexp_Xm1 = r35pow_GR_int_W1 = r36pow_GR_int_W2 = r37pow_GR_int_N = r38pow_GR_index1 = r39pow_GR_index2 = r40pow_AD_T1 = r41pow_AD_T2 = r42pow_int_GR_M = r43pow_GR_sig_int_Y = r44pow_GR_sign_Y_Gpr = r45pow_GR_17ones_m1 = r46pow_GR_one = r47pow_GR_sign_Y = r48pow_GR_signexp_Y_Gpr = r49pow_GR_exp_Y_Gpr = r50pow_GR_true_exp_Y_Gpr = r51pow_GR_signexp_Y = r52pow_GR_x_one = r53pow_GR_exp_2toM63 = r54pow_GR_big_pos = r55pow_GR_big_neg = r56GR_SAVE_B0 = r50GR_SAVE_GP = r51GR_SAVE_PFS = r52GR_Parameter_X = r53GR_Parameter_Y = r54GR_Parameter_RESULT = r55pow_GR_tag = r56// floating point registers usedPOW_B = f32POW_NORM_X = f33POW_Xm1 = f34POW_r1 = f34POW_P4 = f35POW_P5 = f36POW_NORM_Y = f37POW_Q2 = f38POW_Q3 = f39POW_P2 = f40POW_P3 = f41POW_P0 = f42POW_log2_lo = f43POW_r = f44POW_Q0_half = f45POW_Q1 = f46POW_tmp = f47POW_log2_hi = f48POW_Q4 = f49POW_P1 = f50POW_log2_by_128_hi = f51POW_inv_log2_by_128 = f52POW_rsq = f53POW_Yrcub = f54POW_log2_by_128_lo = f55POW_v6 = f56POW_xsq = f57POW_v4 = f58POW_v2 = f59POW_T = f60POW_Tt = f61POW_RSHF = f62POW_v21ps = f63POW_s4 = f64POW_twoV = f65POW_U = f66POW_G = f67POW_delta = f68POW_v3 = f69POW_V = f70POW_p = f71POW_Z1 = f72POW_e3 = f73POW_e2 = f74POW_Z2 = f75POW_e1 = f76POW_W1 = f77POW_UmZ2 = f78POW_W2 = f79POW_Z3 = f80POW_int_W1 = f81POW_e12 = f82POW_int_W2 = f83POW_UmZ2pV = f84POW_Z3sq = f85POW_e123 = f86POW_N1float = f87POW_N2float = f88POW_f3 = f89POW_q = f90POW_s1 = f91POW_Nfloat = f92POW_s2 = f93POW_f2 = f94POW_f1 = f95POW_T1 = f96POW_T2 = f97POW_2M = f98POW_s = f99POW_f12 = f100POW_ssq = f101POW_T1T2 = f102POW_1ps = f103POW_A = f104POW_es = f105POW_Xp1 = f106POW_int_K = f107POW_K = f108POW_f123 = f109POW_Gpr = f110POW_Y_Gpr = f111POW_int_Y = f112POW_abs_q = f114POW_2toM63 = f115POW_float_int_Y = f116POW_ftz_urm_f8 = f117POW_wre_urm_f8 = f118POW_big_neg = f119POW_big_pos = f120POW_GY_Z2 = f121POW_pYrcub_e3 = f122POW_d = f123POW_d2 = f124POW_poly_d_hi = f121POW_poly_d_lo = f122POW_poly_d = f121// Data tables//==============================================================RODATA.align 16LOCAL_OBJECT_START(pow_table_P)data8 0x8000F7B249FF332D, 0x0000BFFC // P_5data8 0xAAAAAAA9E7902C7F, 0x0000BFFC // P_3data8 0x80000000000018E5, 0x0000BFFD // P_1data8 0xb8aa3b295c17f0bc, 0x00004006 // inv_ln2_by_128////data8 0x3FA5555555554A9E // Q_2data8 0x3F8111124F4DD9F9 // Q_3data8 0x3FE0000000000000 // Q_0data8 0x3FC5555555554733 // Q_1data8 0x3F56C16D9360FFA0 // Q_4data8 0x43e8000000000000 // Right shift constant for expdata8 0xc9e3b39803f2f6af, 0x00003fb7 // ln2_by_128_lodata8 0x0000000000000000 // pad to eliminate bank conflicts with pow_table_Qdata8 0x0000000000000000 // pad to eliminate bank conflicts with pow_table_QLOCAL_OBJECT_END(pow_table_P)LOCAL_OBJECT_START(pow_table_Q)data8 0x9249FE7F0DC423CF, 0x00003FFC // P_4data8 0xCCCCCCCC4ED2BA7F, 0x00003FFC // P_2data8 0xAAAAAAAAAAAAB505, 0x00003FFD // P_0data8 0x3fe62e42fefa39e8, 0x3cccd5e4f1d9cc02 // log2 hi lo = +6.93147e-001data8 0xb17217f7d1cf79ab, 0x00003ff7 // ln2_by_128_hiLOCAL_OBJECT_END(pow_table_Q)LOCAL_OBJECT_START(pow_Tt)data8 0x3f60040155d58800, 0x3c93bce0ce3ddd81 // log(1/frcpa(1+0/256))= +1.95503e-003data8 0x3f78121214586a00, 0x3cb540e0a5cfc9bc // log(1/frcpa(1+1/256))= +5.87661e-003data8 0x3f841929f9683200, 0x3cbdf1d57404da1f // log(1/frcpa(1+2/256))= +9.81362e-003data8 0x3f8c317384c75f00, 0x3c69806208c04c22 // log(1/frcpa(1+3/256))= +1.37662e-002data8 0x3f91a6b91ac73380, 0x3c7874daa716eb32 // log(1/frcpa(1+4/256))= +1.72376e-002data8 0x3f95ba9a5d9ac000, 0x3cacbb84e08d78ac // log(1/frcpa(1+5/256))= +2.12196e-002data8 0x3f99d2a807432580, 0x3cbcf80538b441e1 // log(1/frcpa(1+6/256))= +2.52177e-002data8 0x3f9d6b2725979800, 0x3c6095e5c8f8f359 // log(1/frcpa(1+7/256))= +2.87291e-002data8 0x3fa0c58fa19dfa80, 0x3cb4c5d4e9d0dda2 // log(1/frcpa(1+8/256))= +3.27573e-002data8 0x3fa2954c78cbce00, 0x3caa932b860ab8d6 // log(1/frcpa(1+9/256))= +3.62953e-002data8 0x3fa4a94d2da96c40, 0x3ca670452b76bbd5 // log(1/frcpa(1+10/256))= +4.03542e-002data8 0x3fa67c94f2d4bb40, 0x3ca84104f9941798 // log(1/frcpa(1+11/256))= +4.39192e-002data8 0x3fa85188b630f040, 0x3cb40a882cbf0153 // log(1/frcpa(1+12/256))= +4.74971e-002data8 0x3faa6b8abe73af40, 0x3c988d46e25c9059 // log(1/frcpa(1+13/256))= +5.16017e-002data8 0x3fac441e06f72a80, 0x3cae3e930a1a2a96 // log(1/frcpa(1+14/256))= +5.52072e-002data8 0x3fae1e6713606d00, 0x3c8a796f6283b580 // log(1/frcpa(1+15/256))= +5.88257e-002data8 0x3faffa6911ab9300, 0x3c5193070351e88a // log(1/frcpa(1+16/256))= +6.24574e-002data8 0x3fb0ec139c5da600, 0x3c623f2a75eb992d // log(1/frcpa(1+17/256))= +6.61022e-002data8 0x3fb1dbd2643d1900, 0x3ca649b2ef8927f0 // log(1/frcpa(1+18/256))= +6.97605e-002data8 0x3fb2cc7284fe5f00, 0x3cbc5e86599513e2 // log(1/frcpa(1+19/256))= +7.34321e-002data8 0x3fb3bdf5a7d1ee60, 0x3c90bd4bb69dada3 // log(1/frcpa(1+20/256))= +7.71173e-002data8 0x3fb4b05d7aa012e0, 0x3c54e377c9b8a54f // log(1/frcpa(1+21/256))= +8.08161e-002data8 0x3fb580db7ceb5700, 0x3c7fdb2f98354cde // log(1/frcpa(1+22/256))= +8.39975e-002data8 0x3fb674f089365a60, 0x3cb9994c9d3301c1 // log(1/frcpa(1+23/256))= +8.77219e-002data8 0x3fb769ef2c6b5680, 0x3caaec639db52a79 // log(1/frcpa(1+24/256))= +9.14602e-002data8 0x3fb85fd927506a40, 0x3c9f9f99a3cf8e25 // log(1/frcpa(1+25/256))= +9.52125e-002data8 0x3fb9335e5d594980, 0x3ca15c3abd47d99a // log(1/frcpa(1+26/256))= +9.84401e-002data8 0x3fba2b0220c8e5e0, 0x3cb4ca639adf6fc3 // log(1/frcpa(1+27/256))= +1.02219e-001data8 0x3fbb0004ac1a86a0, 0x3ca7cb81bf959a59 // log(1/frcpa(1+28/256))= +1.05469e-001data8 0x3fbbf968769fca00, 0x3cb0c646c121418e // log(1/frcpa(1+29/256))= +1.09274e-001data8 0x3fbccfedbfee13a0, 0x3ca0465fce24ab4b // log(1/frcpa(1+30/256))= +1.12548e-001data8 0x3fbda727638446a0, 0x3c82803f4e2e6603 // log(1/frcpa(1+31/256))= +1.15832e-001data8 0x3fbea3257fe10f60, 0x3cb986a3f2313d1a // log(1/frcpa(1+32/256))= +1.19677e-001data8 0x3fbf7be9fedbfde0, 0x3c97d16a6a621cf4 // log(1/frcpa(1+33/256))= +1.22985e-001data8 0x3fc02ab352ff25f0, 0x3c9cc6baad365600 // log(1/frcpa(1+34/256))= +1.26303e-001data8 0x3fc097ce579d2040, 0x3cb9ba16d329440b // log(1/frcpa(1+35/256))= +1.29633e-001data8 0x3fc1178e8227e470, 0x3cb7bc671683f8e6 // log(1/frcpa(1+36/256))= +1.33531e-001data8 0x3fc185747dbecf30, 0x3c9d1116f66d2345 // log(1/frcpa(1+37/256))= +1.36885e-001data8 0x3fc1f3b925f25d40, 0x3c8162c9ef939ac6 // log(1/frcpa(1+38/256))= +1.40250e-001data8 0x3fc2625d1e6ddf50, 0x3caad3a1ec384fc3 // log(1/frcpa(1+39/256))= +1.43627e-001data8 0x3fc2d1610c868130, 0x3cb3ad997036941b // log(1/frcpa(1+40/256))= +1.47015e-001data8 0x3fc340c597411420, 0x3cbc2308262c7998 // log(1/frcpa(1+41/256))= +1.50414e-001data8 0x3fc3b08b6757f2a0, 0x3cb2170d6cdf0526 // log(1/frcpa(1+42/256))= +1.53825e-001data8 0x3fc40dfb08378000, 0x3c9bb453c4f7b685 // log(1/frcpa(1+43/256))= +1.56677e-001data8 0x3fc47e74e8ca5f70, 0x3cb836a48fdfce9d // log(1/frcpa(1+44/256))= +1.60109e-001data8 0x3fc4ef51f6466de0, 0x3ca07a43919aa64b // log(1/frcpa(1+45/256))= +1.63553e-001data8 0x3fc56092e02ba510, 0x3ca85006899d97b0 // log(1/frcpa(1+46/256))= +1.67010e-001data8 0x3fc5d23857cd74d0, 0x3ca30a5ba6e7abbe // log(1/frcpa(1+47/256))= +1.70478e-001data8 0x3fc6313a37335d70, 0x3ca905586f0ac97e // log(1/frcpa(1+48/256))= +1.73377e-001data8 0x3fc6a399dabbd380, 0x3c9b2c6657a96684 // log(1/frcpa(1+49/256))= +1.76868e-001data8 0x3fc70337dd3ce410, 0x3cb50bc52f55cdd8 // log(1/frcpa(1+50/256))= +1.79786e-001data8 0x3fc77654128f6120, 0x3cad2eb7c9a39efe // log(1/frcpa(1+51/256))= +1.83299e-001data8 0x3fc7e9d82a0b0220, 0x3cba127e90393c01 // log(1/frcpa(1+52/256))= +1.86824e-001data8 0x3fc84a6b759f5120, 0x3cbd7fd52079f706 // log(1/frcpa(1+53/256))= +1.89771e-001data8 0x3fc8ab47d5f5a300, 0x3cbfae141751a3de // log(1/frcpa(1+54/256))= +1.92727e-001data8 0x3fc91fe490965810, 0x3cb69cf30a1c319e // log(1/frcpa(1+55/256))= +1.96286e-001data8 0x3fc981634011aa70, 0x3ca5bb3d208bc42a // log(1/frcpa(1+56/256))= +1.99261e-001data8 0x3fc9f6c407089660, 0x3ca04d68658179a0 // log(1/frcpa(1+57/256))= +2.02843e-001data8 0x3fca58e729348f40, 0x3c99f5411546c286 // log(1/frcpa(1+58/256))= +2.05838e-001data8 0x3fcabb55c31693a0, 0x3cb9a5350eb327d5 // log(1/frcpa(1+59/256))= +2.08842e-001data8 0x3fcb1e104919efd0, 0x3c18965fcce7c406 // log(1/frcpa(1+60/256))= +2.11855e-001data8 0x3fcb94ee93e367c0, 0x3cb503716da45184 // log(1/frcpa(1+61/256))= +2.15483e-001data8 0x3fcbf851c0675550, 0x3cbdf1b3f7ab5378 // log(1/frcpa(1+62/256))= +2.18516e-001data8 0x3fcc5c0254bf23a0, 0x3ca7aab9ed0b1d7b // log(1/frcpa(1+63/256))= +2.21558e-001data8 0x3fccc000c9db3c50, 0x3c92a7a2a850072a // log(1/frcpa(1+64/256))= +2.24609e-001data8 0x3fcd244d99c85670, 0x3c9f6019120edf4c // log(1/frcpa(1+65/256))= +2.27670e-001data8 0x3fcd88e93fb2f450, 0x3c6affb96815e081 // log(1/frcpa(1+66/256))= +2.30741e-001data8 0x3fcdedd437eaef00, 0x3c72553595897976 // log(1/frcpa(1+67/256))= +2.33820e-001data8 0x3fce530effe71010, 0x3c90913b020fa182 // log(1/frcpa(1+68/256))= +2.36910e-001data8 0x3fceb89a1648b970, 0x3c837ba4045bfd25 // log(1/frcpa(1+69/256))= +2.40009e-001data8 0x3fcf1e75fadf9bd0, 0x3cbcea6d13e0498d // log(1/frcpa(1+70/256))= +2.43117e-001data8 0x3fcf84a32ead7c30, 0x3ca5e3a67b3c6d77 // log(1/frcpa(1+71/256))= +2.46235e-001data8 0x3fcfeb2233ea07c0, 0x3cba0c6f0049c5a6 // log(1/frcpa(1+72/256))= +2.49363e-001data8 0x3fd028f9c7035c18, 0x3cb0a30b06677ff6 // log(1/frcpa(1+73/256))= +2.52501e-001data8 0x3fd05c8be0d96358, 0x3ca0f1c77ccb5865 // log(1/frcpa(1+74/256))= +2.55649e-001data8 0x3fd085eb8f8ae790, 0x3cbd513f45fe7a97 // log(1/frcpa(1+75/256))= +2.58174e-001data8 0x3fd0b9c8e32d1910, 0x3c927449047ca006 // log(1/frcpa(1+76/256))= +2.61339e-001data8 0x3fd0edd060b78080, 0x3c89b52d8435f53e // log(1/frcpa(1+77/256))= +2.64515e-001data8 0x3fd122024cf00638, 0x3cbdd976fabda4bd // log(1/frcpa(1+78/256))= +2.67701e-001data8 0x3fd14be2927aecd0, 0x3cb02f90ad0bc471 // log(1/frcpa(1+79/256))= +2.70257e-001data8 0x3fd180618ef18ad8, 0x3cbd003792c71a98 // log(1/frcpa(1+80/256))= +2.73461e-001data8 0x3fd1b50bbe2fc638, 0x3ca9ae64c6403ead // log(1/frcpa(1+81/256))= +2.76675e-001data8 0x3fd1df4cc7cf2428, 0x3cb43f0455f7e395 // log(1/frcpa(1+82/256))= +2.79254e-001data8 0x3fd214456d0eb8d0, 0x3cb0fbd748d75d30 // log(1/frcpa(1+83/256))= +2.82487e-001data8 0x3fd23ec5991eba48, 0x3c906edd746b77e2 // log(1/frcpa(1+84/256))= +2.85081e-001data8 0x3fd2740d9f870af8, 0x3ca9802e6a00a670 // log(1/frcpa(1+85/256))= +2.88333e-001data8 0x3fd29ecdabcdfa00, 0x3cacecef70890cfa // log(1/frcpa(1+86/256))= +2.90943e-001data8 0x3fd2d46602adcce8, 0x3cb97911955f3521 // log(1/frcpa(1+87/256))= +2.94214e-001data8 0x3fd2ff66b04ea9d0, 0x3cb12dabe191d1c9 // log(1/frcpa(1+88/256))= +2.96838e-001data8 0x3fd335504b355a30, 0x3cbdf9139df924ec // log(1/frcpa(1+89/256))= +3.00129e-001data8 0x3fd360925ec44f58, 0x3cb253e68977a1e3 // log(1/frcpa(1+90/256))= +3.02769e-001data8 0x3fd38bf1c3337e70, 0x3cb3d283d2a2da21 // log(1/frcpa(1+91/256))= +3.05417e-001data8 0x3fd3c25277333180, 0x3cadaa5b035eae27 // log(1/frcpa(1+92/256))= +3.08735e-001data8 0x3fd3edf463c16838, 0x3cb983d680d3c108 // log(1/frcpa(1+93/256))= +3.11399e-001data8 0x3fd419b423d5e8c0, 0x3cbc86dd921c139d // log(1/frcpa(1+94/256))= +3.14069e-001
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -