Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: MiniTLS-HTTPS-Example
fp_sqr_comba_24.c
00001 #define TFM_DEFINES 00002 #include "fp_sqr_comba.c" 00003 00004 #ifdef TFM_SQR24 00005 void fp_sqr_comba24(fp_int *A, fp_int *B) 00006 { 00007 fp_digit *a, b[48], c0, c1, c2, sc0, sc1, sc2; 00008 #ifdef TFM_ISO 00009 fp_word tt; 00010 #endif 00011 00012 a = A->dp; 00013 COMBA_START; 00014 00015 /* clear carries */ 00016 CLEAR_CARRY; 00017 00018 /* output 0 */ 00019 SQRADD(a[0],a[0]); 00020 COMBA_STORE(b[0]); 00021 00022 /* output 1 */ 00023 CARRY_FORWARD; 00024 SQRADD2(a[0], a[1]); 00025 COMBA_STORE(b[1]); 00026 00027 /* output 2 */ 00028 CARRY_FORWARD; 00029 SQRADD2(a[0], a[2]); SQRADD(a[1], a[1]); 00030 COMBA_STORE(b[2]); 00031 00032 /* output 3 */ 00033 CARRY_FORWARD; 00034 SQRADD2(a[0], a[3]); SQRADD2(a[1], a[2]); 00035 COMBA_STORE(b[3]); 00036 00037 /* output 4 */ 00038 CARRY_FORWARD; 00039 SQRADD2(a[0], a[4]); SQRADD2(a[1], a[3]); SQRADD(a[2], a[2]); 00040 COMBA_STORE(b[4]); 00041 00042 /* output 5 */ 00043 CARRY_FORWARD; 00044 SQRADDSC(a[0], a[5]); SQRADDAC(a[1], a[4]); SQRADDAC(a[2], a[3]); SQRADDDB; 00045 COMBA_STORE(b[5]); 00046 00047 /* output 6 */ 00048 CARRY_FORWARD; 00049 SQRADDSC(a[0], a[6]); SQRADDAC(a[1], a[5]); SQRADDAC(a[2], a[4]); SQRADDDB; SQRADD(a[3], a[3]); 00050 COMBA_STORE(b[6]); 00051 00052 /* output 7 */ 00053 CARRY_FORWARD; 00054 SQRADDSC(a[0], a[7]); SQRADDAC(a[1], a[6]); SQRADDAC(a[2], a[5]); SQRADDAC(a[3], a[4]); SQRADDDB; 00055 COMBA_STORE(b[7]); 00056 00057 /* output 8 */ 00058 CARRY_FORWARD; 00059 SQRADDSC(a[0], a[8]); SQRADDAC(a[1], a[7]); SQRADDAC(a[2], a[6]); SQRADDAC(a[3], a[5]); SQRADDDB; SQRADD(a[4], a[4]); 00060 COMBA_STORE(b[8]); 00061 00062 /* output 9 */ 00063 CARRY_FORWARD; 00064 SQRADDSC(a[0], a[9]); SQRADDAC(a[1], a[8]); SQRADDAC(a[2], a[7]); SQRADDAC(a[3], a[6]); SQRADDAC(a[4], a[5]); SQRADDDB; 00065 COMBA_STORE(b[9]); 00066 00067 /* output 10 */ 00068 CARRY_FORWARD; 00069 SQRADDSC(a[0], a[10]); SQRADDAC(a[1], a[9]); SQRADDAC(a[2], a[8]); SQRADDAC(a[3], a[7]); SQRADDAC(a[4], a[6]); SQRADDDB; SQRADD(a[5], a[5]); 00070 COMBA_STORE(b[10]); 00071 00072 /* output 11 */ 00073 CARRY_FORWARD; 00074 SQRADDSC(a[0], a[11]); SQRADDAC(a[1], a[10]); SQRADDAC(a[2], a[9]); SQRADDAC(a[3], a[8]); SQRADDAC(a[4], a[7]); SQRADDAC(a[5], a[6]); SQRADDDB; 00075 COMBA_STORE(b[11]); 00076 00077 /* output 12 */ 00078 CARRY_FORWARD; 00079 SQRADDSC(a[0], a[12]); SQRADDAC(a[1], a[11]); SQRADDAC(a[2], a[10]); SQRADDAC(a[3], a[9]); SQRADDAC(a[4], a[8]); SQRADDAC(a[5], a[7]); SQRADDDB; SQRADD(a[6], a[6]); 00080 COMBA_STORE(b[12]); 00081 00082 /* output 13 */ 00083 CARRY_FORWARD; 00084 SQRADDSC(a[0], a[13]); SQRADDAC(a[1], a[12]); SQRADDAC(a[2], a[11]); SQRADDAC(a[3], a[10]); SQRADDAC(a[4], a[9]); SQRADDAC(a[5], a[8]); SQRADDAC(a[6], a[7]); SQRADDDB; 00085 COMBA_STORE(b[13]); 00086 00087 /* output 14 */ 00088 CARRY_FORWARD; 00089 SQRADDSC(a[0], a[14]); SQRADDAC(a[1], a[13]); SQRADDAC(a[2], a[12]); SQRADDAC(a[3], a[11]); SQRADDAC(a[4], a[10]); SQRADDAC(a[5], a[9]); SQRADDAC(a[6], a[8]); SQRADDDB; SQRADD(a[7], a[7]); 00090 COMBA_STORE(b[14]); 00091 00092 /* output 15 */ 00093 CARRY_FORWARD; 00094 SQRADDSC(a[0], a[15]); SQRADDAC(a[1], a[14]); SQRADDAC(a[2], a[13]); SQRADDAC(a[3], a[12]); SQRADDAC(a[4], a[11]); SQRADDAC(a[5], a[10]); SQRADDAC(a[6], a[9]); SQRADDAC(a[7], a[8]); SQRADDDB; 00095 COMBA_STORE(b[15]); 00096 00097 /* output 16 */ 00098 CARRY_FORWARD; 00099 SQRADDSC(a[0], a[16]); SQRADDAC(a[1], a[15]); SQRADDAC(a[2], a[14]); SQRADDAC(a[3], a[13]); SQRADDAC(a[4], a[12]); SQRADDAC(a[5], a[11]); SQRADDAC(a[6], a[10]); SQRADDAC(a[7], a[9]); SQRADDDB; SQRADD(a[8], a[8]); 00100 COMBA_STORE(b[16]); 00101 00102 /* output 17 */ 00103 CARRY_FORWARD; 00104 SQRADDSC(a[0], a[17]); SQRADDAC(a[1], a[16]); SQRADDAC(a[2], a[15]); SQRADDAC(a[3], a[14]); SQRADDAC(a[4], a[13]); SQRADDAC(a[5], a[12]); SQRADDAC(a[6], a[11]); SQRADDAC(a[7], a[10]); SQRADDAC(a[8], a[9]); SQRADDDB; 00105 COMBA_STORE(b[17]); 00106 00107 /* output 18 */ 00108 CARRY_FORWARD; 00109 SQRADDSC(a[0], a[18]); SQRADDAC(a[1], a[17]); SQRADDAC(a[2], a[16]); SQRADDAC(a[3], a[15]); SQRADDAC(a[4], a[14]); SQRADDAC(a[5], a[13]); SQRADDAC(a[6], a[12]); SQRADDAC(a[7], a[11]); SQRADDAC(a[8], a[10]); SQRADDDB; SQRADD(a[9], a[9]); 00110 COMBA_STORE(b[18]); 00111 00112 /* output 19 */ 00113 CARRY_FORWARD; 00114 SQRADDSC(a[0], a[19]); SQRADDAC(a[1], a[18]); SQRADDAC(a[2], a[17]); SQRADDAC(a[3], a[16]); SQRADDAC(a[4], a[15]); SQRADDAC(a[5], a[14]); SQRADDAC(a[6], a[13]); SQRADDAC(a[7], a[12]); SQRADDAC(a[8], a[11]); SQRADDAC(a[9], a[10]); SQRADDDB; 00115 COMBA_STORE(b[19]); 00116 00117 /* output 20 */ 00118 CARRY_FORWARD; 00119 SQRADDSC(a[0], a[20]); SQRADDAC(a[1], a[19]); SQRADDAC(a[2], a[18]); SQRADDAC(a[3], a[17]); SQRADDAC(a[4], a[16]); SQRADDAC(a[5], a[15]); SQRADDAC(a[6], a[14]); SQRADDAC(a[7], a[13]); SQRADDAC(a[8], a[12]); SQRADDAC(a[9], a[11]); SQRADDDB; SQRADD(a[10], a[10]); 00120 COMBA_STORE(b[20]); 00121 00122 /* output 21 */ 00123 CARRY_FORWARD; 00124 SQRADDSC(a[0], a[21]); SQRADDAC(a[1], a[20]); SQRADDAC(a[2], a[19]); SQRADDAC(a[3], a[18]); SQRADDAC(a[4], a[17]); SQRADDAC(a[5], a[16]); SQRADDAC(a[6], a[15]); SQRADDAC(a[7], a[14]); SQRADDAC(a[8], a[13]); SQRADDAC(a[9], a[12]); SQRADDAC(a[10], a[11]); SQRADDDB; 00125 COMBA_STORE(b[21]); 00126 00127 /* output 22 */ 00128 CARRY_FORWARD; 00129 SQRADDSC(a[0], a[22]); SQRADDAC(a[1], a[21]); SQRADDAC(a[2], a[20]); SQRADDAC(a[3], a[19]); SQRADDAC(a[4], a[18]); SQRADDAC(a[5], a[17]); SQRADDAC(a[6], a[16]); SQRADDAC(a[7], a[15]); SQRADDAC(a[8], a[14]); SQRADDAC(a[9], a[13]); SQRADDAC(a[10], a[12]); SQRADDDB; SQRADD(a[11], a[11]); 00130 COMBA_STORE(b[22]); 00131 00132 /* output 23 */ 00133 CARRY_FORWARD; 00134 SQRADDSC(a[0], a[23]); SQRADDAC(a[1], a[22]); SQRADDAC(a[2], a[21]); SQRADDAC(a[3], a[20]); SQRADDAC(a[4], a[19]); SQRADDAC(a[5], a[18]); SQRADDAC(a[6], a[17]); SQRADDAC(a[7], a[16]); SQRADDAC(a[8], a[15]); SQRADDAC(a[9], a[14]); SQRADDAC(a[10], a[13]); SQRADDAC(a[11], a[12]); SQRADDDB; 00135 COMBA_STORE(b[23]); 00136 00137 /* output 24 */ 00138 CARRY_FORWARD; 00139 SQRADDSC(a[1], a[23]); SQRADDAC(a[2], a[22]); SQRADDAC(a[3], a[21]); SQRADDAC(a[4], a[20]); SQRADDAC(a[5], a[19]); SQRADDAC(a[6], a[18]); SQRADDAC(a[7], a[17]); SQRADDAC(a[8], a[16]); SQRADDAC(a[9], a[15]); SQRADDAC(a[10], a[14]); SQRADDAC(a[11], a[13]); SQRADDDB; SQRADD(a[12], a[12]); 00140 COMBA_STORE(b[24]); 00141 00142 /* output 25 */ 00143 CARRY_FORWARD; 00144 SQRADDSC(a[2], a[23]); SQRADDAC(a[3], a[22]); SQRADDAC(a[4], a[21]); SQRADDAC(a[5], a[20]); SQRADDAC(a[6], a[19]); SQRADDAC(a[7], a[18]); SQRADDAC(a[8], a[17]); SQRADDAC(a[9], a[16]); SQRADDAC(a[10], a[15]); SQRADDAC(a[11], a[14]); SQRADDAC(a[12], a[13]); SQRADDDB; 00145 COMBA_STORE(b[25]); 00146 00147 /* output 26 */ 00148 CARRY_FORWARD; 00149 SQRADDSC(a[3], a[23]); SQRADDAC(a[4], a[22]); SQRADDAC(a[5], a[21]); SQRADDAC(a[6], a[20]); SQRADDAC(a[7], a[19]); SQRADDAC(a[8], a[18]); SQRADDAC(a[9], a[17]); SQRADDAC(a[10], a[16]); SQRADDAC(a[11], a[15]); SQRADDAC(a[12], a[14]); SQRADDDB; SQRADD(a[13], a[13]); 00150 COMBA_STORE(b[26]); 00151 00152 /* output 27 */ 00153 CARRY_FORWARD; 00154 SQRADDSC(a[4], a[23]); SQRADDAC(a[5], a[22]); SQRADDAC(a[6], a[21]); SQRADDAC(a[7], a[20]); SQRADDAC(a[8], a[19]); SQRADDAC(a[9], a[18]); SQRADDAC(a[10], a[17]); SQRADDAC(a[11], a[16]); SQRADDAC(a[12], a[15]); SQRADDAC(a[13], a[14]); SQRADDDB; 00155 COMBA_STORE(b[27]); 00156 00157 /* output 28 */ 00158 CARRY_FORWARD; 00159 SQRADDSC(a[5], a[23]); SQRADDAC(a[6], a[22]); SQRADDAC(a[7], a[21]); SQRADDAC(a[8], a[20]); SQRADDAC(a[9], a[19]); SQRADDAC(a[10], a[18]); SQRADDAC(a[11], a[17]); SQRADDAC(a[12], a[16]); SQRADDAC(a[13], a[15]); SQRADDDB; SQRADD(a[14], a[14]); 00160 COMBA_STORE(b[28]); 00161 00162 /* output 29 */ 00163 CARRY_FORWARD; 00164 SQRADDSC(a[6], a[23]); SQRADDAC(a[7], a[22]); SQRADDAC(a[8], a[21]); SQRADDAC(a[9], a[20]); SQRADDAC(a[10], a[19]); SQRADDAC(a[11], a[18]); SQRADDAC(a[12], a[17]); SQRADDAC(a[13], a[16]); SQRADDAC(a[14], a[15]); SQRADDDB; 00165 COMBA_STORE(b[29]); 00166 00167 /* output 30 */ 00168 CARRY_FORWARD; 00169 SQRADDSC(a[7], a[23]); SQRADDAC(a[8], a[22]); SQRADDAC(a[9], a[21]); SQRADDAC(a[10], a[20]); SQRADDAC(a[11], a[19]); SQRADDAC(a[12], a[18]); SQRADDAC(a[13], a[17]); SQRADDAC(a[14], a[16]); SQRADDDB; SQRADD(a[15], a[15]); 00170 COMBA_STORE(b[30]); 00171 00172 /* output 31 */ 00173 CARRY_FORWARD; 00174 SQRADDSC(a[8], a[23]); SQRADDAC(a[9], a[22]); SQRADDAC(a[10], a[21]); SQRADDAC(a[11], a[20]); SQRADDAC(a[12], a[19]); SQRADDAC(a[13], a[18]); SQRADDAC(a[14], a[17]); SQRADDAC(a[15], a[16]); SQRADDDB; 00175 COMBA_STORE(b[31]); 00176 00177 /* output 32 */ 00178 CARRY_FORWARD; 00179 SQRADDSC(a[9], a[23]); SQRADDAC(a[10], a[22]); SQRADDAC(a[11], a[21]); SQRADDAC(a[12], a[20]); SQRADDAC(a[13], a[19]); SQRADDAC(a[14], a[18]); SQRADDAC(a[15], a[17]); SQRADDDB; SQRADD(a[16], a[16]); 00180 COMBA_STORE(b[32]); 00181 00182 /* output 33 */ 00183 CARRY_FORWARD; 00184 SQRADDSC(a[10], a[23]); SQRADDAC(a[11], a[22]); SQRADDAC(a[12], a[21]); SQRADDAC(a[13], a[20]); SQRADDAC(a[14], a[19]); SQRADDAC(a[15], a[18]); SQRADDAC(a[16], a[17]); SQRADDDB; 00185 COMBA_STORE(b[33]); 00186 00187 /* output 34 */ 00188 CARRY_FORWARD; 00189 SQRADDSC(a[11], a[23]); SQRADDAC(a[12], a[22]); SQRADDAC(a[13], a[21]); SQRADDAC(a[14], a[20]); SQRADDAC(a[15], a[19]); SQRADDAC(a[16], a[18]); SQRADDDB; SQRADD(a[17], a[17]); 00190 COMBA_STORE(b[34]); 00191 00192 /* output 35 */ 00193 CARRY_FORWARD; 00194 SQRADDSC(a[12], a[23]); SQRADDAC(a[13], a[22]); SQRADDAC(a[14], a[21]); SQRADDAC(a[15], a[20]); SQRADDAC(a[16], a[19]); SQRADDAC(a[17], a[18]); SQRADDDB; 00195 COMBA_STORE(b[35]); 00196 00197 /* output 36 */ 00198 CARRY_FORWARD; 00199 SQRADDSC(a[13], a[23]); SQRADDAC(a[14], a[22]); SQRADDAC(a[15], a[21]); SQRADDAC(a[16], a[20]); SQRADDAC(a[17], a[19]); SQRADDDB; SQRADD(a[18], a[18]); 00200 COMBA_STORE(b[36]); 00201 00202 /* output 37 */ 00203 CARRY_FORWARD; 00204 SQRADDSC(a[14], a[23]); SQRADDAC(a[15], a[22]); SQRADDAC(a[16], a[21]); SQRADDAC(a[17], a[20]); SQRADDAC(a[18], a[19]); SQRADDDB; 00205 COMBA_STORE(b[37]); 00206 00207 /* output 38 */ 00208 CARRY_FORWARD; 00209 SQRADDSC(a[15], a[23]); SQRADDAC(a[16], a[22]); SQRADDAC(a[17], a[21]); SQRADDAC(a[18], a[20]); SQRADDDB; SQRADD(a[19], a[19]); 00210 COMBA_STORE(b[38]); 00211 00212 /* output 39 */ 00213 CARRY_FORWARD; 00214 SQRADDSC(a[16], a[23]); SQRADDAC(a[17], a[22]); SQRADDAC(a[18], a[21]); SQRADDAC(a[19], a[20]); SQRADDDB; 00215 COMBA_STORE(b[39]); 00216 00217 /* output 40 */ 00218 CARRY_FORWARD; 00219 SQRADDSC(a[17], a[23]); SQRADDAC(a[18], a[22]); SQRADDAC(a[19], a[21]); SQRADDDB; SQRADD(a[20], a[20]); 00220 COMBA_STORE(b[40]); 00221 00222 /* output 41 */ 00223 CARRY_FORWARD; 00224 SQRADDSC(a[18], a[23]); SQRADDAC(a[19], a[22]); SQRADDAC(a[20], a[21]); SQRADDDB; 00225 COMBA_STORE(b[41]); 00226 00227 /* output 42 */ 00228 CARRY_FORWARD; 00229 SQRADD2(a[19], a[23]); SQRADD2(a[20], a[22]); SQRADD(a[21], a[21]); 00230 COMBA_STORE(b[42]); 00231 00232 /* output 43 */ 00233 CARRY_FORWARD; 00234 SQRADD2(a[20], a[23]); SQRADD2(a[21], a[22]); 00235 COMBA_STORE(b[43]); 00236 00237 /* output 44 */ 00238 CARRY_FORWARD; 00239 SQRADD2(a[21], a[23]); SQRADD(a[22], a[22]); 00240 COMBA_STORE(b[44]); 00241 00242 /* output 45 */ 00243 CARRY_FORWARD; 00244 SQRADD2(a[22], a[23]); 00245 COMBA_STORE(b[45]); 00246 00247 /* output 46 */ 00248 CARRY_FORWARD; 00249 SQRADD(a[23], a[23]); 00250 COMBA_STORE(b[46]); 00251 COMBA_STORE2(b[47]); 00252 COMBA_FINI; 00253 00254 B->used = 48; 00255 B->sign = FP_ZPOS; 00256 memcpy(B->dp, b, 48 * sizeof(fp_digit)); 00257 fp_clamp(B); 00258 } 00259 #endif 00260 00261 00262 /* $Source: /cvs/libtom/tomsfastmath/src/sqr/fp_sqr_comba_24.c,v $ */ 00263 /* $Revision: 1.2 $ */ 00264 /* $Date: 2007/02/17 03:39:01 $ */
Generated on Wed Jul 13 2022 00:22:54 by
1.7.2