ARM Shanghai IoT Team (Internal) / newMiniTLS-GPL

Fork of MiniTLS-GPL by Donatien Garnier

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers fp_sqr_comba_small_set.c Source File

fp_sqr_comba_small_set.c

00001 #define TFM_DEFINES
00002 #include "fp_sqr_comba.c"
00003 
00004 #if defined(TFM_SMALL_SET)
00005 void fp_sqr_comba_small(fp_int *A, fp_int *B)
00006 {
00007    fp_digit *a, b[32], c0, c1, c2, sc0, sc1, sc2;
00008 #ifdef TFM_ISO
00009    fp_word   tt;   
00010 #endif   
00011    switch (A->used) { 
00012    case 1:
00013       a = A->dp;
00014       COMBA_START; 
00015 
00016       /* clear carries */
00017       CLEAR_CARRY;
00018 
00019       /* output 0 */
00020       SQRADD(a[0],a[0]);
00021       COMBA_STORE(b[0]);
00022       COMBA_STORE2(b[1]);
00023       COMBA_FINI;
00024 
00025       B->used = 2;
00026       B->sign = FP_ZPOS;
00027       memcpy(B->dp, b, 2 * sizeof(fp_digit));
00028       fp_clamp(B);
00029       break;
00030 
00031    case 2:
00032       a = A->dp;
00033       COMBA_START; 
00034 
00035       /* clear carries */
00036       CLEAR_CARRY;
00037 
00038       /* output 0 */
00039       SQRADD(a[0],a[0]);
00040       COMBA_STORE(b[0]);
00041 
00042       /* output 1 */
00043       CARRY_FORWARD;
00044       SQRADD2(a[0], a[1]); 
00045       COMBA_STORE(b[1]);
00046 
00047       /* output 2 */
00048       CARRY_FORWARD;
00049       SQRADD(a[1], a[1]); 
00050       COMBA_STORE(b[2]);
00051       COMBA_STORE2(b[3]);
00052       COMBA_FINI;
00053 
00054       B->used = 4;
00055       B->sign = FP_ZPOS;
00056       memcpy(B->dp, b, 4 * sizeof(fp_digit));
00057       fp_clamp(B);
00058       break;
00059 
00060    case 3:
00061       a = A->dp;
00062       COMBA_START; 
00063 
00064       /* clear carries */
00065       CLEAR_CARRY;
00066 
00067       /* output 0 */
00068       SQRADD(a[0],a[0]);
00069       COMBA_STORE(b[0]);
00070 
00071       /* output 1 */
00072       CARRY_FORWARD;
00073       SQRADD2(a[0], a[1]); 
00074       COMBA_STORE(b[1]);
00075 
00076       /* output 2 */
00077       CARRY_FORWARD;
00078       SQRADD2(a[0], a[2]);    SQRADD(a[1], a[1]); 
00079       COMBA_STORE(b[2]);
00080 
00081       /* output 3 */
00082       CARRY_FORWARD;
00083       SQRADD2(a[1], a[2]); 
00084       COMBA_STORE(b[3]);
00085 
00086       /* output 4 */
00087       CARRY_FORWARD;
00088       SQRADD(a[2], a[2]); 
00089       COMBA_STORE(b[4]);
00090       COMBA_STORE2(b[5]);
00091       COMBA_FINI;
00092 
00093       B->used = 6;
00094       B->sign = FP_ZPOS;
00095       memcpy(B->dp, b, 6 * sizeof(fp_digit));
00096       fp_clamp(B);
00097       break;
00098 
00099    case 4:
00100       a = A->dp;
00101       COMBA_START; 
00102 
00103       /* clear carries */
00104       CLEAR_CARRY;
00105 
00106       /* output 0 */
00107       SQRADD(a[0],a[0]);
00108       COMBA_STORE(b[0]);
00109 
00110       /* output 1 */
00111       CARRY_FORWARD;
00112       SQRADD2(a[0], a[1]); 
00113       COMBA_STORE(b[1]);
00114 
00115       /* output 2 */
00116       CARRY_FORWARD;
00117       SQRADD2(a[0], a[2]);    SQRADD(a[1], a[1]); 
00118       COMBA_STORE(b[2]);
00119 
00120       /* output 3 */
00121       CARRY_FORWARD;
00122       SQRADD2(a[0], a[3]);    SQRADD2(a[1], a[2]); 
00123       COMBA_STORE(b[3]);
00124 
00125       /* output 4 */
00126       CARRY_FORWARD;
00127       SQRADD2(a[1], a[3]);    SQRADD(a[2], a[2]); 
00128       COMBA_STORE(b[4]);
00129 
00130       /* output 5 */
00131       CARRY_FORWARD;
00132       SQRADD2(a[2], a[3]); 
00133       COMBA_STORE(b[5]);
00134 
00135       /* output 6 */
00136       CARRY_FORWARD;
00137       SQRADD(a[3], a[3]); 
00138       COMBA_STORE(b[6]);
00139       COMBA_STORE2(b[7]);
00140       COMBA_FINI;
00141 
00142       B->used = 8;
00143       B->sign = FP_ZPOS;
00144       memcpy(B->dp, b, 8 * sizeof(fp_digit));
00145       fp_clamp(B);
00146       break;
00147 
00148    case 5:
00149       a = A->dp;
00150       COMBA_START; 
00151 
00152       /* clear carries */
00153       CLEAR_CARRY;
00154 
00155       /* output 0 */
00156       SQRADD(a[0],a[0]);
00157       COMBA_STORE(b[0]);
00158 
00159       /* output 1 */
00160       CARRY_FORWARD;
00161       SQRADD2(a[0], a[1]); 
00162       COMBA_STORE(b[1]);
00163 
00164       /* output 2 */
00165       CARRY_FORWARD;
00166       SQRADD2(a[0], a[2]);    SQRADD(a[1], a[1]); 
00167       COMBA_STORE(b[2]);
00168 
00169       /* output 3 */
00170       CARRY_FORWARD;
00171       SQRADD2(a[0], a[3]);    SQRADD2(a[1], a[2]); 
00172       COMBA_STORE(b[3]);
00173 
00174       /* output 4 */
00175       CARRY_FORWARD;
00176       SQRADD2(a[0], a[4]);    SQRADD2(a[1], a[3]);    SQRADD(a[2], a[2]); 
00177       COMBA_STORE(b[4]);
00178 
00179       /* output 5 */
00180       CARRY_FORWARD;
00181       SQRADD2(a[1], a[4]);    SQRADD2(a[2], a[3]); 
00182       COMBA_STORE(b[5]);
00183 
00184       /* output 6 */
00185       CARRY_FORWARD;
00186       SQRADD2(a[2], a[4]);    SQRADD(a[3], a[3]); 
00187       COMBA_STORE(b[6]);
00188 
00189       /* output 7 */
00190       CARRY_FORWARD;
00191       SQRADD2(a[3], a[4]); 
00192       COMBA_STORE(b[7]);
00193 
00194       /* output 8 */
00195       CARRY_FORWARD;
00196       SQRADD(a[4], a[4]); 
00197       COMBA_STORE(b[8]);
00198       COMBA_STORE2(b[9]);
00199       COMBA_FINI;
00200 
00201       B->used = 10;
00202       B->sign = FP_ZPOS;
00203       memcpy(B->dp, b, 10 * sizeof(fp_digit));
00204       fp_clamp(B);
00205       break;
00206 
00207    case 6:
00208       a = A->dp;
00209       COMBA_START; 
00210 
00211       /* clear carries */
00212       CLEAR_CARRY;
00213 
00214       /* output 0 */
00215       SQRADD(a[0],a[0]);
00216       COMBA_STORE(b[0]);
00217 
00218       /* output 1 */
00219       CARRY_FORWARD;
00220       SQRADD2(a[0], a[1]); 
00221       COMBA_STORE(b[1]);
00222 
00223       /* output 2 */
00224       CARRY_FORWARD;
00225       SQRADD2(a[0], a[2]);    SQRADD(a[1], a[1]); 
00226       COMBA_STORE(b[2]);
00227 
00228       /* output 3 */
00229       CARRY_FORWARD;
00230       SQRADD2(a[0], a[3]);    SQRADD2(a[1], a[2]); 
00231       COMBA_STORE(b[3]);
00232 
00233       /* output 4 */
00234       CARRY_FORWARD;
00235       SQRADD2(a[0], a[4]);    SQRADD2(a[1], a[3]);    SQRADD(a[2], a[2]); 
00236       COMBA_STORE(b[4]);
00237 
00238       /* output 5 */
00239       CARRY_FORWARD;
00240    SQRADDSC(a[0], a[5]); SQRADDAC(a[1], a[4]); SQRADDAC(a[2], a[3]); SQRADDDB; 
00241       COMBA_STORE(b[5]);
00242 
00243       /* output 6 */
00244       CARRY_FORWARD;
00245       SQRADD2(a[1], a[5]);    SQRADD2(a[2], a[4]);    SQRADD(a[3], a[3]); 
00246       COMBA_STORE(b[6]);
00247 
00248       /* output 7 */
00249       CARRY_FORWARD;
00250       SQRADD2(a[2], a[5]);    SQRADD2(a[3], a[4]); 
00251       COMBA_STORE(b[7]);
00252 
00253       /* output 8 */
00254       CARRY_FORWARD;
00255       SQRADD2(a[3], a[5]);    SQRADD(a[4], a[4]); 
00256       COMBA_STORE(b[8]);
00257 
00258       /* output 9 */
00259       CARRY_FORWARD;
00260       SQRADD2(a[4], a[5]); 
00261       COMBA_STORE(b[9]);
00262 
00263       /* output 10 */
00264       CARRY_FORWARD;
00265       SQRADD(a[5], a[5]); 
00266       COMBA_STORE(b[10]);
00267       COMBA_STORE2(b[11]);
00268       COMBA_FINI;
00269 
00270       B->used = 12;
00271       B->sign = FP_ZPOS;
00272       memcpy(B->dp, b, 12 * sizeof(fp_digit));
00273       fp_clamp(B);
00274       break;
00275 
00276    case 7:
00277       a = A->dp;
00278       COMBA_START; 
00279 
00280       /* clear carries */
00281       CLEAR_CARRY;
00282 
00283       /* output 0 */
00284       SQRADD(a[0],a[0]);
00285       COMBA_STORE(b[0]);
00286 
00287       /* output 1 */
00288       CARRY_FORWARD;
00289       SQRADD2(a[0], a[1]); 
00290       COMBA_STORE(b[1]);
00291 
00292       /* output 2 */
00293       CARRY_FORWARD;
00294       SQRADD2(a[0], a[2]);    SQRADD(a[1], a[1]); 
00295       COMBA_STORE(b[2]);
00296 
00297       /* output 3 */
00298       CARRY_FORWARD;
00299       SQRADD2(a[0], a[3]);    SQRADD2(a[1], a[2]); 
00300       COMBA_STORE(b[3]);
00301 
00302       /* output 4 */
00303       CARRY_FORWARD;
00304       SQRADD2(a[0], a[4]);    SQRADD2(a[1], a[3]);    SQRADD(a[2], a[2]); 
00305       COMBA_STORE(b[4]);
00306 
00307       /* output 5 */
00308       CARRY_FORWARD;
00309    SQRADDSC(a[0], a[5]); SQRADDAC(a[1], a[4]); SQRADDAC(a[2], a[3]); SQRADDDB; 
00310       COMBA_STORE(b[5]);
00311 
00312       /* output 6 */
00313       CARRY_FORWARD;
00314    SQRADDSC(a[0], a[6]); SQRADDAC(a[1], a[5]); SQRADDAC(a[2], a[4]); SQRADDDB; SQRADD(a[3], a[3]); 
00315       COMBA_STORE(b[6]);
00316 
00317       /* output 7 */
00318       CARRY_FORWARD;
00319    SQRADDSC(a[1], a[6]); SQRADDAC(a[2], a[5]); SQRADDAC(a[3], a[4]); SQRADDDB; 
00320       COMBA_STORE(b[7]);
00321 
00322       /* output 8 */
00323       CARRY_FORWARD;
00324       SQRADD2(a[2], a[6]);    SQRADD2(a[3], a[5]);    SQRADD(a[4], a[4]); 
00325       COMBA_STORE(b[8]);
00326 
00327       /* output 9 */
00328       CARRY_FORWARD;
00329       SQRADD2(a[3], a[6]);    SQRADD2(a[4], a[5]); 
00330       COMBA_STORE(b[9]);
00331 
00332       /* output 10 */
00333       CARRY_FORWARD;
00334       SQRADD2(a[4], a[6]);    SQRADD(a[5], a[5]); 
00335       COMBA_STORE(b[10]);
00336 
00337       /* output 11 */
00338       CARRY_FORWARD;
00339       SQRADD2(a[5], a[6]); 
00340       COMBA_STORE(b[11]);
00341 
00342       /* output 12 */
00343       CARRY_FORWARD;
00344       SQRADD(a[6], a[6]); 
00345       COMBA_STORE(b[12]);
00346       COMBA_STORE2(b[13]);
00347       COMBA_FINI;
00348 
00349       B->used = 14;
00350       B->sign = FP_ZPOS;
00351       memcpy(B->dp, b, 14 * sizeof(fp_digit));
00352       fp_clamp(B);
00353       break;
00354 
00355    case 8:
00356       a = A->dp;
00357       COMBA_START; 
00358 
00359       /* clear carries */
00360       CLEAR_CARRY;
00361 
00362       /* output 0 */
00363       SQRADD(a[0],a[0]);
00364       COMBA_STORE(b[0]);
00365 
00366       /* output 1 */
00367       CARRY_FORWARD;
00368       SQRADD2(a[0], a[1]); 
00369       COMBA_STORE(b[1]);
00370 
00371       /* output 2 */
00372       CARRY_FORWARD;
00373       SQRADD2(a[0], a[2]);    SQRADD(a[1], a[1]); 
00374       COMBA_STORE(b[2]);
00375 
00376       /* output 3 */
00377       CARRY_FORWARD;
00378       SQRADD2(a[0], a[3]);    SQRADD2(a[1], a[2]); 
00379       COMBA_STORE(b[3]);
00380 
00381       /* output 4 */
00382       CARRY_FORWARD;
00383       SQRADD2(a[0], a[4]);    SQRADD2(a[1], a[3]);    SQRADD(a[2], a[2]); 
00384       COMBA_STORE(b[4]);
00385 
00386       /* output 5 */
00387       CARRY_FORWARD;
00388    SQRADDSC(a[0], a[5]); SQRADDAC(a[1], a[4]); SQRADDAC(a[2], a[3]); SQRADDDB; 
00389       COMBA_STORE(b[5]);
00390 
00391       /* output 6 */
00392       CARRY_FORWARD;
00393    SQRADDSC(a[0], a[6]); SQRADDAC(a[1], a[5]); SQRADDAC(a[2], a[4]); SQRADDDB; SQRADD(a[3], a[3]); 
00394       COMBA_STORE(b[6]);
00395 
00396       /* output 7 */
00397       CARRY_FORWARD;
00398    SQRADDSC(a[0], a[7]); SQRADDAC(a[1], a[6]); SQRADDAC(a[2], a[5]); SQRADDAC(a[3], a[4]); SQRADDDB; 
00399       COMBA_STORE(b[7]);
00400 
00401       /* output 8 */
00402       CARRY_FORWARD;
00403    SQRADDSC(a[1], a[7]); SQRADDAC(a[2], a[6]); SQRADDAC(a[3], a[5]); SQRADDDB; SQRADD(a[4], a[4]); 
00404       COMBA_STORE(b[8]);
00405 
00406       /* output 9 */
00407       CARRY_FORWARD;
00408    SQRADDSC(a[2], a[7]); SQRADDAC(a[3], a[6]); SQRADDAC(a[4], a[5]); SQRADDDB; 
00409       COMBA_STORE(b[9]);
00410 
00411       /* output 10 */
00412       CARRY_FORWARD;
00413       SQRADD2(a[3], a[7]);    SQRADD2(a[4], a[6]);    SQRADD(a[5], a[5]); 
00414       COMBA_STORE(b[10]);
00415 
00416       /* output 11 */
00417       CARRY_FORWARD;
00418       SQRADD2(a[4], a[7]);    SQRADD2(a[5], a[6]); 
00419       COMBA_STORE(b[11]);
00420 
00421       /* output 12 */
00422       CARRY_FORWARD;
00423       SQRADD2(a[5], a[7]);    SQRADD(a[6], a[6]); 
00424       COMBA_STORE(b[12]);
00425 
00426       /* output 13 */
00427       CARRY_FORWARD;
00428       SQRADD2(a[6], a[7]); 
00429       COMBA_STORE(b[13]);
00430 
00431       /* output 14 */
00432       CARRY_FORWARD;
00433       SQRADD(a[7], a[7]); 
00434       COMBA_STORE(b[14]);
00435       COMBA_STORE2(b[15]);
00436       COMBA_FINI;
00437 
00438       B->used = 16;
00439       B->sign = FP_ZPOS;
00440       memcpy(B->dp, b, 16 * sizeof(fp_digit));
00441       fp_clamp(B);
00442       break;
00443 
00444    case 9:
00445       a = A->dp;
00446       COMBA_START; 
00447 
00448       /* clear carries */
00449       CLEAR_CARRY;
00450 
00451       /* output 0 */
00452       SQRADD(a[0],a[0]);
00453       COMBA_STORE(b[0]);
00454 
00455       /* output 1 */
00456       CARRY_FORWARD;
00457       SQRADD2(a[0], a[1]); 
00458       COMBA_STORE(b[1]);
00459 
00460       /* output 2 */
00461       CARRY_FORWARD;
00462       SQRADD2(a[0], a[2]);    SQRADD(a[1], a[1]); 
00463       COMBA_STORE(b[2]);
00464 
00465       /* output 3 */
00466       CARRY_FORWARD;
00467       SQRADD2(a[0], a[3]);    SQRADD2(a[1], a[2]); 
00468       COMBA_STORE(b[3]);
00469 
00470       /* output 4 */
00471       CARRY_FORWARD;
00472       SQRADD2(a[0], a[4]);    SQRADD2(a[1], a[3]);    SQRADD(a[2], a[2]); 
00473       COMBA_STORE(b[4]);
00474 
00475       /* output 5 */
00476       CARRY_FORWARD;
00477    SQRADDSC(a[0], a[5]); SQRADDAC(a[1], a[4]); SQRADDAC(a[2], a[3]); SQRADDDB; 
00478       COMBA_STORE(b[5]);
00479 
00480       /* output 6 */
00481       CARRY_FORWARD;
00482    SQRADDSC(a[0], a[6]); SQRADDAC(a[1], a[5]); SQRADDAC(a[2], a[4]); SQRADDDB; SQRADD(a[3], a[3]); 
00483       COMBA_STORE(b[6]);
00484 
00485       /* output 7 */
00486       CARRY_FORWARD;
00487    SQRADDSC(a[0], a[7]); SQRADDAC(a[1], a[6]); SQRADDAC(a[2], a[5]); SQRADDAC(a[3], a[4]); SQRADDDB; 
00488       COMBA_STORE(b[7]);
00489 
00490       /* output 8 */
00491       CARRY_FORWARD;
00492    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]); 
00493       COMBA_STORE(b[8]);
00494 
00495       /* output 9 */
00496       CARRY_FORWARD;
00497    SQRADDSC(a[1], a[8]); SQRADDAC(a[2], a[7]); SQRADDAC(a[3], a[6]); SQRADDAC(a[4], a[5]); SQRADDDB; 
00498       COMBA_STORE(b[9]);
00499 
00500       /* output 10 */
00501       CARRY_FORWARD;
00502    SQRADDSC(a[2], a[8]); SQRADDAC(a[3], a[7]); SQRADDAC(a[4], a[6]); SQRADDDB; SQRADD(a[5], a[5]); 
00503       COMBA_STORE(b[10]);
00504 
00505       /* output 11 */
00506       CARRY_FORWARD;
00507    SQRADDSC(a[3], a[8]); SQRADDAC(a[4], a[7]); SQRADDAC(a[5], a[6]); SQRADDDB; 
00508       COMBA_STORE(b[11]);
00509 
00510       /* output 12 */
00511       CARRY_FORWARD;
00512       SQRADD2(a[4], a[8]);    SQRADD2(a[5], a[7]);    SQRADD(a[6], a[6]); 
00513       COMBA_STORE(b[12]);
00514 
00515       /* output 13 */
00516       CARRY_FORWARD;
00517       SQRADD2(a[5], a[8]);    SQRADD2(a[6], a[7]); 
00518       COMBA_STORE(b[13]);
00519 
00520       /* output 14 */
00521       CARRY_FORWARD;
00522       SQRADD2(a[6], a[8]);    SQRADD(a[7], a[7]); 
00523       COMBA_STORE(b[14]);
00524 
00525       /* output 15 */
00526       CARRY_FORWARD;
00527       SQRADD2(a[7], a[8]); 
00528       COMBA_STORE(b[15]);
00529 
00530       /* output 16 */
00531       CARRY_FORWARD;
00532       SQRADD(a[8], a[8]); 
00533       COMBA_STORE(b[16]);
00534       COMBA_STORE2(b[17]);
00535       COMBA_FINI;
00536 
00537       B->used = 18;
00538       B->sign = FP_ZPOS;
00539       memcpy(B->dp, b, 18 * sizeof(fp_digit));
00540       fp_clamp(B);
00541       break;
00542 
00543    case 10:
00544       a = A->dp;
00545       COMBA_START; 
00546 
00547       /* clear carries */
00548       CLEAR_CARRY;
00549 
00550       /* output 0 */
00551       SQRADD(a[0],a[0]);
00552       COMBA_STORE(b[0]);
00553 
00554       /* output 1 */
00555       CARRY_FORWARD;
00556       SQRADD2(a[0], a[1]); 
00557       COMBA_STORE(b[1]);
00558 
00559       /* output 2 */
00560       CARRY_FORWARD;
00561       SQRADD2(a[0], a[2]);    SQRADD(a[1], a[1]); 
00562       COMBA_STORE(b[2]);
00563 
00564       /* output 3 */
00565       CARRY_FORWARD;
00566       SQRADD2(a[0], a[3]);    SQRADD2(a[1], a[2]); 
00567       COMBA_STORE(b[3]);
00568 
00569       /* output 4 */
00570       CARRY_FORWARD;
00571       SQRADD2(a[0], a[4]);    SQRADD2(a[1], a[3]);    SQRADD(a[2], a[2]); 
00572       COMBA_STORE(b[4]);
00573 
00574       /* output 5 */
00575       CARRY_FORWARD;
00576    SQRADDSC(a[0], a[5]); SQRADDAC(a[1], a[4]); SQRADDAC(a[2], a[3]); SQRADDDB; 
00577       COMBA_STORE(b[5]);
00578 
00579       /* output 6 */
00580       CARRY_FORWARD;
00581    SQRADDSC(a[0], a[6]); SQRADDAC(a[1], a[5]); SQRADDAC(a[2], a[4]); SQRADDDB; SQRADD(a[3], a[3]); 
00582       COMBA_STORE(b[6]);
00583 
00584       /* output 7 */
00585       CARRY_FORWARD;
00586    SQRADDSC(a[0], a[7]); SQRADDAC(a[1], a[6]); SQRADDAC(a[2], a[5]); SQRADDAC(a[3], a[4]); SQRADDDB; 
00587       COMBA_STORE(b[7]);
00588 
00589       /* output 8 */
00590       CARRY_FORWARD;
00591    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]); 
00592       COMBA_STORE(b[8]);
00593 
00594       /* output 9 */
00595       CARRY_FORWARD;
00596    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; 
00597       COMBA_STORE(b[9]);
00598 
00599       /* output 10 */
00600       CARRY_FORWARD;
00601    SQRADDSC(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]); 
00602       COMBA_STORE(b[10]);
00603 
00604       /* output 11 */
00605       CARRY_FORWARD;
00606    SQRADDSC(a[2], a[9]); SQRADDAC(a[3], a[8]); SQRADDAC(a[4], a[7]); SQRADDAC(a[5], a[6]); SQRADDDB; 
00607       COMBA_STORE(b[11]);
00608 
00609       /* output 12 */
00610       CARRY_FORWARD;
00611    SQRADDSC(a[3], a[9]); SQRADDAC(a[4], a[8]); SQRADDAC(a[5], a[7]); SQRADDDB; SQRADD(a[6], a[6]); 
00612       COMBA_STORE(b[12]);
00613 
00614       /* output 13 */
00615       CARRY_FORWARD;
00616    SQRADDSC(a[4], a[9]); SQRADDAC(a[5], a[8]); SQRADDAC(a[6], a[7]); SQRADDDB; 
00617       COMBA_STORE(b[13]);
00618 
00619       /* output 14 */
00620       CARRY_FORWARD;
00621       SQRADD2(a[5], a[9]);    SQRADD2(a[6], a[8]);    SQRADD(a[7], a[7]); 
00622       COMBA_STORE(b[14]);
00623 
00624       /* output 15 */
00625       CARRY_FORWARD;
00626       SQRADD2(a[6], a[9]);    SQRADD2(a[7], a[8]); 
00627       COMBA_STORE(b[15]);
00628 
00629       /* output 16 */
00630       CARRY_FORWARD;
00631       SQRADD2(a[7], a[9]);    SQRADD(a[8], a[8]); 
00632       COMBA_STORE(b[16]);
00633 
00634       /* output 17 */
00635       CARRY_FORWARD;
00636       SQRADD2(a[8], a[9]); 
00637       COMBA_STORE(b[17]);
00638 
00639       /* output 18 */
00640       CARRY_FORWARD;
00641       SQRADD(a[9], a[9]); 
00642       COMBA_STORE(b[18]);
00643       COMBA_STORE2(b[19]);
00644       COMBA_FINI;
00645 
00646       B->used = 20;
00647       B->sign = FP_ZPOS;
00648       memcpy(B->dp, b, 20 * sizeof(fp_digit));
00649       fp_clamp(B);
00650       break;
00651 
00652    case 11:
00653       a = A->dp;
00654       COMBA_START; 
00655 
00656       /* clear carries */
00657       CLEAR_CARRY;
00658 
00659       /* output 0 */
00660       SQRADD(a[0],a[0]);
00661       COMBA_STORE(b[0]);
00662 
00663       /* output 1 */
00664       CARRY_FORWARD;
00665       SQRADD2(a[0], a[1]); 
00666       COMBA_STORE(b[1]);
00667 
00668       /* output 2 */
00669       CARRY_FORWARD;
00670       SQRADD2(a[0], a[2]);    SQRADD(a[1], a[1]); 
00671       COMBA_STORE(b[2]);
00672 
00673       /* output 3 */
00674       CARRY_FORWARD;
00675       SQRADD2(a[0], a[3]);    SQRADD2(a[1], a[2]); 
00676       COMBA_STORE(b[3]);
00677 
00678       /* output 4 */
00679       CARRY_FORWARD;
00680       SQRADD2(a[0], a[4]);    SQRADD2(a[1], a[3]);    SQRADD(a[2], a[2]); 
00681       COMBA_STORE(b[4]);
00682 
00683       /* output 5 */
00684       CARRY_FORWARD;
00685    SQRADDSC(a[0], a[5]); SQRADDAC(a[1], a[4]); SQRADDAC(a[2], a[3]); SQRADDDB; 
00686       COMBA_STORE(b[5]);
00687 
00688       /* output 6 */
00689       CARRY_FORWARD;
00690    SQRADDSC(a[0], a[6]); SQRADDAC(a[1], a[5]); SQRADDAC(a[2], a[4]); SQRADDDB; SQRADD(a[3], a[3]); 
00691       COMBA_STORE(b[6]);
00692 
00693       /* output 7 */
00694       CARRY_FORWARD;
00695    SQRADDSC(a[0], a[7]); SQRADDAC(a[1], a[6]); SQRADDAC(a[2], a[5]); SQRADDAC(a[3], a[4]); SQRADDDB; 
00696       COMBA_STORE(b[7]);
00697 
00698       /* output 8 */
00699       CARRY_FORWARD;
00700    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]); 
00701       COMBA_STORE(b[8]);
00702 
00703       /* output 9 */
00704       CARRY_FORWARD;
00705    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; 
00706       COMBA_STORE(b[9]);
00707 
00708       /* output 10 */
00709       CARRY_FORWARD;
00710    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]); 
00711       COMBA_STORE(b[10]);
00712 
00713       /* output 11 */
00714       CARRY_FORWARD;
00715    SQRADDSC(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; 
00716       COMBA_STORE(b[11]);
00717 
00718       /* output 12 */
00719       CARRY_FORWARD;
00720    SQRADDSC(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]); 
00721       COMBA_STORE(b[12]);
00722 
00723       /* output 13 */
00724       CARRY_FORWARD;
00725    SQRADDSC(a[3], a[10]); SQRADDAC(a[4], a[9]); SQRADDAC(a[5], a[8]); SQRADDAC(a[6], a[7]); SQRADDDB; 
00726       COMBA_STORE(b[13]);
00727 
00728       /* output 14 */
00729       CARRY_FORWARD;
00730    SQRADDSC(a[4], a[10]); SQRADDAC(a[5], a[9]); SQRADDAC(a[6], a[8]); SQRADDDB; SQRADD(a[7], a[7]); 
00731       COMBA_STORE(b[14]);
00732 
00733       /* output 15 */
00734       CARRY_FORWARD;
00735    SQRADDSC(a[5], a[10]); SQRADDAC(a[6], a[9]); SQRADDAC(a[7], a[8]); SQRADDDB; 
00736       COMBA_STORE(b[15]);
00737 
00738       /* output 16 */
00739       CARRY_FORWARD;
00740       SQRADD2(a[6], a[10]);    SQRADD2(a[7], a[9]);    SQRADD(a[8], a[8]); 
00741       COMBA_STORE(b[16]);
00742 
00743       /* output 17 */
00744       CARRY_FORWARD;
00745       SQRADD2(a[7], a[10]);    SQRADD2(a[8], a[9]); 
00746       COMBA_STORE(b[17]);
00747 
00748       /* output 18 */
00749       CARRY_FORWARD;
00750       SQRADD2(a[8], a[10]);    SQRADD(a[9], a[9]); 
00751       COMBA_STORE(b[18]);
00752 
00753       /* output 19 */
00754       CARRY_FORWARD;
00755       SQRADD2(a[9], a[10]); 
00756       COMBA_STORE(b[19]);
00757 
00758       /* output 20 */
00759       CARRY_FORWARD;
00760       SQRADD(a[10], a[10]); 
00761       COMBA_STORE(b[20]);
00762       COMBA_STORE2(b[21]);
00763       COMBA_FINI;
00764 
00765       B->used = 22;
00766       B->sign = FP_ZPOS;
00767       memcpy(B->dp, b, 22 * sizeof(fp_digit));
00768       fp_clamp(B);
00769       break;
00770 
00771    case 12:
00772       a = A->dp;
00773       COMBA_START; 
00774 
00775       /* clear carries */
00776       CLEAR_CARRY;
00777 
00778       /* output 0 */
00779       SQRADD(a[0],a[0]);
00780       COMBA_STORE(b[0]);
00781 
00782       /* output 1 */
00783       CARRY_FORWARD;
00784       SQRADD2(a[0], a[1]); 
00785       COMBA_STORE(b[1]);
00786 
00787       /* output 2 */
00788       CARRY_FORWARD;
00789       SQRADD2(a[0], a[2]);    SQRADD(a[1], a[1]); 
00790       COMBA_STORE(b[2]);
00791 
00792       /* output 3 */
00793       CARRY_FORWARD;
00794       SQRADD2(a[0], a[3]);    SQRADD2(a[1], a[2]); 
00795       COMBA_STORE(b[3]);
00796 
00797       /* output 4 */
00798       CARRY_FORWARD;
00799       SQRADD2(a[0], a[4]);    SQRADD2(a[1], a[3]);    SQRADD(a[2], a[2]); 
00800       COMBA_STORE(b[4]);
00801 
00802       /* output 5 */
00803       CARRY_FORWARD;
00804    SQRADDSC(a[0], a[5]); SQRADDAC(a[1], a[4]); SQRADDAC(a[2], a[3]); SQRADDDB; 
00805       COMBA_STORE(b[5]);
00806 
00807       /* output 6 */
00808       CARRY_FORWARD;
00809    SQRADDSC(a[0], a[6]); SQRADDAC(a[1], a[5]); SQRADDAC(a[2], a[4]); SQRADDDB; SQRADD(a[3], a[3]); 
00810       COMBA_STORE(b[6]);
00811 
00812       /* output 7 */
00813       CARRY_FORWARD;
00814    SQRADDSC(a[0], a[7]); SQRADDAC(a[1], a[6]); SQRADDAC(a[2], a[5]); SQRADDAC(a[3], a[4]); SQRADDDB; 
00815       COMBA_STORE(b[7]);
00816 
00817       /* output 8 */
00818       CARRY_FORWARD;
00819    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]); 
00820       COMBA_STORE(b[8]);
00821 
00822       /* output 9 */
00823       CARRY_FORWARD;
00824    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; 
00825       COMBA_STORE(b[9]);
00826 
00827       /* output 10 */
00828       CARRY_FORWARD;
00829    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]); 
00830       COMBA_STORE(b[10]);
00831 
00832       /* output 11 */
00833       CARRY_FORWARD;
00834    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; 
00835       COMBA_STORE(b[11]);
00836 
00837       /* output 12 */
00838       CARRY_FORWARD;
00839    SQRADDSC(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]); 
00840       COMBA_STORE(b[12]);
00841 
00842       /* output 13 */
00843       CARRY_FORWARD;
00844    SQRADDSC(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; 
00845       COMBA_STORE(b[13]);
00846 
00847       /* output 14 */
00848       CARRY_FORWARD;
00849    SQRADDSC(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]); 
00850       COMBA_STORE(b[14]);
00851 
00852       /* output 15 */
00853       CARRY_FORWARD;
00854    SQRADDSC(a[4], a[11]); SQRADDAC(a[5], a[10]); SQRADDAC(a[6], a[9]); SQRADDAC(a[7], a[8]); SQRADDDB; 
00855       COMBA_STORE(b[15]);
00856 
00857       /* output 16 */
00858       CARRY_FORWARD;
00859    SQRADDSC(a[5], a[11]); SQRADDAC(a[6], a[10]); SQRADDAC(a[7], a[9]); SQRADDDB; SQRADD(a[8], a[8]); 
00860       COMBA_STORE(b[16]);
00861 
00862       /* output 17 */
00863       CARRY_FORWARD;
00864    SQRADDSC(a[6], a[11]); SQRADDAC(a[7], a[10]); SQRADDAC(a[8], a[9]); SQRADDDB; 
00865       COMBA_STORE(b[17]);
00866 
00867       /* output 18 */
00868       CARRY_FORWARD;
00869       SQRADD2(a[7], a[11]);    SQRADD2(a[8], a[10]);    SQRADD(a[9], a[9]); 
00870       COMBA_STORE(b[18]);
00871 
00872       /* output 19 */
00873       CARRY_FORWARD;
00874       SQRADD2(a[8], a[11]);    SQRADD2(a[9], a[10]); 
00875       COMBA_STORE(b[19]);
00876 
00877       /* output 20 */
00878       CARRY_FORWARD;
00879       SQRADD2(a[9], a[11]);    SQRADD(a[10], a[10]); 
00880       COMBA_STORE(b[20]);
00881 
00882       /* output 21 */
00883       CARRY_FORWARD;
00884       SQRADD2(a[10], a[11]); 
00885       COMBA_STORE(b[21]);
00886 
00887       /* output 22 */
00888       CARRY_FORWARD;
00889       SQRADD(a[11], a[11]); 
00890       COMBA_STORE(b[22]);
00891       COMBA_STORE2(b[23]);
00892       COMBA_FINI;
00893 
00894       B->used = 24;
00895       B->sign = FP_ZPOS;
00896       memcpy(B->dp, b, 24 * sizeof(fp_digit));
00897       fp_clamp(B);
00898       break;
00899 
00900    case 13:
00901       a = A->dp;
00902       COMBA_START; 
00903 
00904       /* clear carries */
00905       CLEAR_CARRY;
00906 
00907       /* output 0 */
00908       SQRADD(a[0],a[0]);
00909       COMBA_STORE(b[0]);
00910 
00911       /* output 1 */
00912       CARRY_FORWARD;
00913       SQRADD2(a[0], a[1]); 
00914       COMBA_STORE(b[1]);
00915 
00916       /* output 2 */
00917       CARRY_FORWARD;
00918       SQRADD2(a[0], a[2]);    SQRADD(a[1], a[1]); 
00919       COMBA_STORE(b[2]);
00920 
00921       /* output 3 */
00922       CARRY_FORWARD;
00923       SQRADD2(a[0], a[3]);    SQRADD2(a[1], a[2]); 
00924       COMBA_STORE(b[3]);
00925 
00926       /* output 4 */
00927       CARRY_FORWARD;
00928       SQRADD2(a[0], a[4]);    SQRADD2(a[1], a[3]);    SQRADD(a[2], a[2]); 
00929       COMBA_STORE(b[4]);
00930 
00931       /* output 5 */
00932       CARRY_FORWARD;
00933    SQRADDSC(a[0], a[5]); SQRADDAC(a[1], a[4]); SQRADDAC(a[2], a[3]); SQRADDDB; 
00934       COMBA_STORE(b[5]);
00935 
00936       /* output 6 */
00937       CARRY_FORWARD;
00938    SQRADDSC(a[0], a[6]); SQRADDAC(a[1], a[5]); SQRADDAC(a[2], a[4]); SQRADDDB; SQRADD(a[3], a[3]); 
00939       COMBA_STORE(b[6]);
00940 
00941       /* output 7 */
00942       CARRY_FORWARD;
00943    SQRADDSC(a[0], a[7]); SQRADDAC(a[1], a[6]); SQRADDAC(a[2], a[5]); SQRADDAC(a[3], a[4]); SQRADDDB; 
00944       COMBA_STORE(b[7]);
00945 
00946       /* output 8 */
00947       CARRY_FORWARD;
00948    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]); 
00949       COMBA_STORE(b[8]);
00950 
00951       /* output 9 */
00952       CARRY_FORWARD;
00953    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; 
00954       COMBA_STORE(b[9]);
00955 
00956       /* output 10 */
00957       CARRY_FORWARD;
00958    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]); 
00959       COMBA_STORE(b[10]);
00960 
00961       /* output 11 */
00962       CARRY_FORWARD;
00963    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; 
00964       COMBA_STORE(b[11]);
00965 
00966       /* output 12 */
00967       CARRY_FORWARD;
00968    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]); 
00969       COMBA_STORE(b[12]);
00970 
00971       /* output 13 */
00972       CARRY_FORWARD;
00973    SQRADDSC(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; 
00974       COMBA_STORE(b[13]);
00975 
00976       /* output 14 */
00977       CARRY_FORWARD;
00978    SQRADDSC(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]); 
00979       COMBA_STORE(b[14]);
00980 
00981       /* output 15 */
00982       CARRY_FORWARD;
00983    SQRADDSC(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; 
00984       COMBA_STORE(b[15]);
00985 
00986       /* output 16 */
00987       CARRY_FORWARD;
00988    SQRADDSC(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]); 
00989       COMBA_STORE(b[16]);
00990 
00991       /* output 17 */
00992       CARRY_FORWARD;
00993    SQRADDSC(a[5], a[12]); SQRADDAC(a[6], a[11]); SQRADDAC(a[7], a[10]); SQRADDAC(a[8], a[9]); SQRADDDB; 
00994       COMBA_STORE(b[17]);
00995 
00996       /* output 18 */
00997       CARRY_FORWARD;
00998    SQRADDSC(a[6], a[12]); SQRADDAC(a[7], a[11]); SQRADDAC(a[8], a[10]); SQRADDDB; SQRADD(a[9], a[9]); 
00999       COMBA_STORE(b[18]);
01000 
01001       /* output 19 */
01002       CARRY_FORWARD;
01003    SQRADDSC(a[7], a[12]); SQRADDAC(a[8], a[11]); SQRADDAC(a[9], a[10]); SQRADDDB; 
01004       COMBA_STORE(b[19]);
01005 
01006       /* output 20 */
01007       CARRY_FORWARD;
01008       SQRADD2(a[8], a[12]);    SQRADD2(a[9], a[11]);    SQRADD(a[10], a[10]); 
01009       COMBA_STORE(b[20]);
01010 
01011       /* output 21 */
01012       CARRY_FORWARD;
01013       SQRADD2(a[9], a[12]);    SQRADD2(a[10], a[11]); 
01014       COMBA_STORE(b[21]);
01015 
01016       /* output 22 */
01017       CARRY_FORWARD;
01018       SQRADD2(a[10], a[12]);    SQRADD(a[11], a[11]); 
01019       COMBA_STORE(b[22]);
01020 
01021       /* output 23 */
01022       CARRY_FORWARD;
01023       SQRADD2(a[11], a[12]); 
01024       COMBA_STORE(b[23]);
01025 
01026       /* output 24 */
01027       CARRY_FORWARD;
01028       SQRADD(a[12], a[12]); 
01029       COMBA_STORE(b[24]);
01030       COMBA_STORE2(b[25]);
01031       COMBA_FINI;
01032 
01033       B->used = 26;
01034       B->sign = FP_ZPOS;
01035       memcpy(B->dp, b, 26 * sizeof(fp_digit));
01036       fp_clamp(B);
01037       break;
01038 
01039    case 14:
01040       a = A->dp;
01041       COMBA_START; 
01042 
01043       /* clear carries */
01044       CLEAR_CARRY;
01045 
01046       /* output 0 */
01047       SQRADD(a[0],a[0]);
01048       COMBA_STORE(b[0]);
01049 
01050       /* output 1 */
01051       CARRY_FORWARD;
01052       SQRADD2(a[0], a[1]); 
01053       COMBA_STORE(b[1]);
01054 
01055       /* output 2 */
01056       CARRY_FORWARD;
01057       SQRADD2(a[0], a[2]);    SQRADD(a[1], a[1]); 
01058       COMBA_STORE(b[2]);
01059 
01060       /* output 3 */
01061       CARRY_FORWARD;
01062       SQRADD2(a[0], a[3]);    SQRADD2(a[1], a[2]); 
01063       COMBA_STORE(b[3]);
01064 
01065       /* output 4 */
01066       CARRY_FORWARD;
01067       SQRADD2(a[0], a[4]);    SQRADD2(a[1], a[3]);    SQRADD(a[2], a[2]); 
01068       COMBA_STORE(b[4]);
01069 
01070       /* output 5 */
01071       CARRY_FORWARD;
01072    SQRADDSC(a[0], a[5]); SQRADDAC(a[1], a[4]); SQRADDAC(a[2], a[3]); SQRADDDB; 
01073       COMBA_STORE(b[5]);
01074 
01075       /* output 6 */
01076       CARRY_FORWARD;
01077    SQRADDSC(a[0], a[6]); SQRADDAC(a[1], a[5]); SQRADDAC(a[2], a[4]); SQRADDDB; SQRADD(a[3], a[3]); 
01078       COMBA_STORE(b[6]);
01079 
01080       /* output 7 */
01081       CARRY_FORWARD;
01082    SQRADDSC(a[0], a[7]); SQRADDAC(a[1], a[6]); SQRADDAC(a[2], a[5]); SQRADDAC(a[3], a[4]); SQRADDDB; 
01083       COMBA_STORE(b[7]);
01084 
01085       /* output 8 */
01086       CARRY_FORWARD;
01087    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]); 
01088       COMBA_STORE(b[8]);
01089 
01090       /* output 9 */
01091       CARRY_FORWARD;
01092    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; 
01093       COMBA_STORE(b[9]);
01094 
01095       /* output 10 */
01096       CARRY_FORWARD;
01097    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]); 
01098       COMBA_STORE(b[10]);
01099 
01100       /* output 11 */
01101       CARRY_FORWARD;
01102    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; 
01103       COMBA_STORE(b[11]);
01104 
01105       /* output 12 */
01106       CARRY_FORWARD;
01107    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]); 
01108       COMBA_STORE(b[12]);
01109 
01110       /* output 13 */
01111       CARRY_FORWARD;
01112    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; 
01113       COMBA_STORE(b[13]);
01114 
01115       /* output 14 */
01116       CARRY_FORWARD;
01117    SQRADDSC(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]); 
01118       COMBA_STORE(b[14]);
01119 
01120       /* output 15 */
01121       CARRY_FORWARD;
01122    SQRADDSC(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; 
01123       COMBA_STORE(b[15]);
01124 
01125       /* output 16 */
01126       CARRY_FORWARD;
01127    SQRADDSC(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]); 
01128       COMBA_STORE(b[16]);
01129 
01130       /* output 17 */
01131       CARRY_FORWARD;
01132    SQRADDSC(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; 
01133       COMBA_STORE(b[17]);
01134 
01135       /* output 18 */
01136       CARRY_FORWARD;
01137    SQRADDSC(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]); 
01138       COMBA_STORE(b[18]);
01139 
01140       /* output 19 */
01141       CARRY_FORWARD;
01142    SQRADDSC(a[6], a[13]); SQRADDAC(a[7], a[12]); SQRADDAC(a[8], a[11]); SQRADDAC(a[9], a[10]); SQRADDDB; 
01143       COMBA_STORE(b[19]);
01144 
01145       /* output 20 */
01146       CARRY_FORWARD;
01147    SQRADDSC(a[7], a[13]); SQRADDAC(a[8], a[12]); SQRADDAC(a[9], a[11]); SQRADDDB; SQRADD(a[10], a[10]); 
01148       COMBA_STORE(b[20]);
01149 
01150       /* output 21 */
01151       CARRY_FORWARD;
01152    SQRADDSC(a[8], a[13]); SQRADDAC(a[9], a[12]); SQRADDAC(a[10], a[11]); SQRADDDB; 
01153       COMBA_STORE(b[21]);
01154 
01155       /* output 22 */
01156       CARRY_FORWARD;
01157       SQRADD2(a[9], a[13]);    SQRADD2(a[10], a[12]);    SQRADD(a[11], a[11]); 
01158       COMBA_STORE(b[22]);
01159 
01160       /* output 23 */
01161       CARRY_FORWARD;
01162       SQRADD2(a[10], a[13]);    SQRADD2(a[11], a[12]); 
01163       COMBA_STORE(b[23]);
01164 
01165       /* output 24 */
01166       CARRY_FORWARD;
01167       SQRADD2(a[11], a[13]);    SQRADD(a[12], a[12]); 
01168       COMBA_STORE(b[24]);
01169 
01170       /* output 25 */
01171       CARRY_FORWARD;
01172       SQRADD2(a[12], a[13]); 
01173       COMBA_STORE(b[25]);
01174 
01175       /* output 26 */
01176       CARRY_FORWARD;
01177       SQRADD(a[13], a[13]); 
01178       COMBA_STORE(b[26]);
01179       COMBA_STORE2(b[27]);
01180       COMBA_FINI;
01181 
01182       B->used = 28;
01183       B->sign = FP_ZPOS;
01184       memcpy(B->dp, b, 28 * sizeof(fp_digit));
01185       fp_clamp(B);
01186       break;
01187 
01188    case 15:
01189       a = A->dp;
01190       COMBA_START; 
01191 
01192       /* clear carries */
01193       CLEAR_CARRY;
01194 
01195       /* output 0 */
01196       SQRADD(a[0],a[0]);
01197       COMBA_STORE(b[0]);
01198 
01199       /* output 1 */
01200       CARRY_FORWARD;
01201       SQRADD2(a[0], a[1]); 
01202       COMBA_STORE(b[1]);
01203 
01204       /* output 2 */
01205       CARRY_FORWARD;
01206       SQRADD2(a[0], a[2]);    SQRADD(a[1], a[1]); 
01207       COMBA_STORE(b[2]);
01208 
01209       /* output 3 */
01210       CARRY_FORWARD;
01211       SQRADD2(a[0], a[3]);    SQRADD2(a[1], a[2]); 
01212       COMBA_STORE(b[3]);
01213 
01214       /* output 4 */
01215       CARRY_FORWARD;
01216       SQRADD2(a[0], a[4]);    SQRADD2(a[1], a[3]);    SQRADD(a[2], a[2]); 
01217       COMBA_STORE(b[4]);
01218 
01219       /* output 5 */
01220       CARRY_FORWARD;
01221    SQRADDSC(a[0], a[5]); SQRADDAC(a[1], a[4]); SQRADDAC(a[2], a[3]); SQRADDDB; 
01222       COMBA_STORE(b[5]);
01223 
01224       /* output 6 */
01225       CARRY_FORWARD;
01226    SQRADDSC(a[0], a[6]); SQRADDAC(a[1], a[5]); SQRADDAC(a[2], a[4]); SQRADDDB; SQRADD(a[3], a[3]); 
01227       COMBA_STORE(b[6]);
01228 
01229       /* output 7 */
01230       CARRY_FORWARD;
01231    SQRADDSC(a[0], a[7]); SQRADDAC(a[1], a[6]); SQRADDAC(a[2], a[5]); SQRADDAC(a[3], a[4]); SQRADDDB; 
01232       COMBA_STORE(b[7]);
01233 
01234       /* output 8 */
01235       CARRY_FORWARD;
01236    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]); 
01237       COMBA_STORE(b[8]);
01238 
01239       /* output 9 */
01240       CARRY_FORWARD;
01241    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; 
01242       COMBA_STORE(b[9]);
01243 
01244       /* output 10 */
01245       CARRY_FORWARD;
01246    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]); 
01247       COMBA_STORE(b[10]);
01248 
01249       /* output 11 */
01250       CARRY_FORWARD;
01251    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; 
01252       COMBA_STORE(b[11]);
01253 
01254       /* output 12 */
01255       CARRY_FORWARD;
01256    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]); 
01257       COMBA_STORE(b[12]);
01258 
01259       /* output 13 */
01260       CARRY_FORWARD;
01261    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; 
01262       COMBA_STORE(b[13]);
01263 
01264       /* output 14 */
01265       CARRY_FORWARD;
01266    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]); 
01267       COMBA_STORE(b[14]);
01268 
01269       /* output 15 */
01270       CARRY_FORWARD;
01271    SQRADDSC(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; 
01272       COMBA_STORE(b[15]);
01273 
01274       /* output 16 */
01275       CARRY_FORWARD;
01276    SQRADDSC(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]); 
01277       COMBA_STORE(b[16]);
01278 
01279       /* output 17 */
01280       CARRY_FORWARD;
01281    SQRADDSC(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; 
01282       COMBA_STORE(b[17]);
01283 
01284       /* output 18 */
01285       CARRY_FORWARD;
01286    SQRADDSC(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]); 
01287       COMBA_STORE(b[18]);
01288 
01289       /* output 19 */
01290       CARRY_FORWARD;
01291    SQRADDSC(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; 
01292       COMBA_STORE(b[19]);
01293 
01294       /* output 20 */
01295       CARRY_FORWARD;
01296    SQRADDSC(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]); 
01297       COMBA_STORE(b[20]);
01298 
01299       /* output 21 */
01300       CARRY_FORWARD;
01301    SQRADDSC(a[7], a[14]); SQRADDAC(a[8], a[13]); SQRADDAC(a[9], a[12]); SQRADDAC(a[10], a[11]); SQRADDDB; 
01302       COMBA_STORE(b[21]);
01303 
01304       /* output 22 */
01305       CARRY_FORWARD;
01306    SQRADDSC(a[8], a[14]); SQRADDAC(a[9], a[13]); SQRADDAC(a[10], a[12]); SQRADDDB; SQRADD(a[11], a[11]); 
01307       COMBA_STORE(b[22]);
01308 
01309       /* output 23 */
01310       CARRY_FORWARD;
01311    SQRADDSC(a[9], a[14]); SQRADDAC(a[10], a[13]); SQRADDAC(a[11], a[12]); SQRADDDB; 
01312       COMBA_STORE(b[23]);
01313 
01314       /* output 24 */
01315       CARRY_FORWARD;
01316       SQRADD2(a[10], a[14]);    SQRADD2(a[11], a[13]);    SQRADD(a[12], a[12]); 
01317       COMBA_STORE(b[24]);
01318 
01319       /* output 25 */
01320       CARRY_FORWARD;
01321       SQRADD2(a[11], a[14]);    SQRADD2(a[12], a[13]); 
01322       COMBA_STORE(b[25]);
01323 
01324       /* output 26 */
01325       CARRY_FORWARD;
01326       SQRADD2(a[12], a[14]);    SQRADD(a[13], a[13]); 
01327       COMBA_STORE(b[26]);
01328 
01329       /* output 27 */
01330       CARRY_FORWARD;
01331       SQRADD2(a[13], a[14]); 
01332       COMBA_STORE(b[27]);
01333 
01334       /* output 28 */
01335       CARRY_FORWARD;
01336       SQRADD(a[14], a[14]); 
01337       COMBA_STORE(b[28]);
01338       COMBA_STORE2(b[29]);
01339       COMBA_FINI;
01340 
01341       B->used = 30;
01342       B->sign = FP_ZPOS;
01343       memcpy(B->dp, b, 30 * sizeof(fp_digit));
01344       fp_clamp(B);
01345       break;
01346 
01347    case 16:
01348       a = A->dp;
01349       COMBA_START; 
01350 
01351       /* clear carries */
01352       CLEAR_CARRY;
01353 
01354       /* output 0 */
01355       SQRADD(a[0],a[0]);
01356       COMBA_STORE(b[0]);
01357 
01358       /* output 1 */
01359       CARRY_FORWARD;
01360       SQRADD2(a[0], a[1]); 
01361       COMBA_STORE(b[1]);
01362 
01363       /* output 2 */
01364       CARRY_FORWARD;
01365       SQRADD2(a[0], a[2]);    SQRADD(a[1], a[1]); 
01366       COMBA_STORE(b[2]);
01367 
01368       /* output 3 */
01369       CARRY_FORWARD;
01370       SQRADD2(a[0], a[3]);    SQRADD2(a[1], a[2]); 
01371       COMBA_STORE(b[3]);
01372 
01373       /* output 4 */
01374       CARRY_FORWARD;
01375       SQRADD2(a[0], a[4]);    SQRADD2(a[1], a[3]);    SQRADD(a[2], a[2]); 
01376       COMBA_STORE(b[4]);
01377 
01378       /* output 5 */
01379       CARRY_FORWARD;
01380    SQRADDSC(a[0], a[5]); SQRADDAC(a[1], a[4]); SQRADDAC(a[2], a[3]); SQRADDDB; 
01381       COMBA_STORE(b[5]);
01382 
01383       /* output 6 */
01384       CARRY_FORWARD;
01385    SQRADDSC(a[0], a[6]); SQRADDAC(a[1], a[5]); SQRADDAC(a[2], a[4]); SQRADDDB; SQRADD(a[3], a[3]); 
01386       COMBA_STORE(b[6]);
01387 
01388       /* output 7 */
01389       CARRY_FORWARD;
01390    SQRADDSC(a[0], a[7]); SQRADDAC(a[1], a[6]); SQRADDAC(a[2], a[5]); SQRADDAC(a[3], a[4]); SQRADDDB; 
01391       COMBA_STORE(b[7]);
01392 
01393       /* output 8 */
01394       CARRY_FORWARD;
01395    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]); 
01396       COMBA_STORE(b[8]);
01397 
01398       /* output 9 */
01399       CARRY_FORWARD;
01400    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; 
01401       COMBA_STORE(b[9]);
01402 
01403       /* output 10 */
01404       CARRY_FORWARD;
01405    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]); 
01406       COMBA_STORE(b[10]);
01407 
01408       /* output 11 */
01409       CARRY_FORWARD;
01410    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; 
01411       COMBA_STORE(b[11]);
01412 
01413       /* output 12 */
01414       CARRY_FORWARD;
01415    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]); 
01416       COMBA_STORE(b[12]);
01417 
01418       /* output 13 */
01419       CARRY_FORWARD;
01420    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; 
01421       COMBA_STORE(b[13]);
01422 
01423       /* output 14 */
01424       CARRY_FORWARD;
01425    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]); 
01426       COMBA_STORE(b[14]);
01427 
01428       /* output 15 */
01429       CARRY_FORWARD;
01430    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; 
01431       COMBA_STORE(b[15]);
01432 
01433       /* output 16 */
01434       CARRY_FORWARD;
01435    SQRADDSC(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]); 
01436       COMBA_STORE(b[16]);
01437 
01438       /* output 17 */
01439       CARRY_FORWARD;
01440    SQRADDSC(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; 
01441       COMBA_STORE(b[17]);
01442 
01443       /* output 18 */
01444       CARRY_FORWARD;
01445    SQRADDSC(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]); 
01446       COMBA_STORE(b[18]);
01447 
01448       /* output 19 */
01449       CARRY_FORWARD;
01450    SQRADDSC(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; 
01451       COMBA_STORE(b[19]);
01452 
01453       /* output 20 */
01454       CARRY_FORWARD;
01455    SQRADDSC(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]); 
01456       COMBA_STORE(b[20]);
01457 
01458       /* output 21 */
01459       CARRY_FORWARD;
01460    SQRADDSC(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; 
01461       COMBA_STORE(b[21]);
01462 
01463       /* output 22 */
01464       CARRY_FORWARD;
01465    SQRADDSC(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]); 
01466       COMBA_STORE(b[22]);
01467 
01468       /* output 23 */
01469       CARRY_FORWARD;
01470    SQRADDSC(a[8], a[15]); SQRADDAC(a[9], a[14]); SQRADDAC(a[10], a[13]); SQRADDAC(a[11], a[12]); SQRADDDB; 
01471       COMBA_STORE(b[23]);
01472 
01473       /* output 24 */
01474       CARRY_FORWARD;
01475    SQRADDSC(a[9], a[15]); SQRADDAC(a[10], a[14]); SQRADDAC(a[11], a[13]); SQRADDDB; SQRADD(a[12], a[12]); 
01476       COMBA_STORE(b[24]);
01477 
01478       /* output 25 */
01479       CARRY_FORWARD;
01480    SQRADDSC(a[10], a[15]); SQRADDAC(a[11], a[14]); SQRADDAC(a[12], a[13]); SQRADDDB; 
01481       COMBA_STORE(b[25]);
01482 
01483       /* output 26 */
01484       CARRY_FORWARD;
01485       SQRADD2(a[11], a[15]);    SQRADD2(a[12], a[14]);    SQRADD(a[13], a[13]); 
01486       COMBA_STORE(b[26]);
01487 
01488       /* output 27 */
01489       CARRY_FORWARD;
01490       SQRADD2(a[12], a[15]);    SQRADD2(a[13], a[14]); 
01491       COMBA_STORE(b[27]);
01492 
01493       /* output 28 */
01494       CARRY_FORWARD;
01495       SQRADD2(a[13], a[15]);    SQRADD(a[14], a[14]); 
01496       COMBA_STORE(b[28]);
01497 
01498       /* output 29 */
01499       CARRY_FORWARD;
01500       SQRADD2(a[14], a[15]); 
01501       COMBA_STORE(b[29]);
01502 
01503       /* output 30 */
01504       CARRY_FORWARD;
01505       SQRADD(a[15], a[15]); 
01506       COMBA_STORE(b[30]);
01507       COMBA_STORE2(b[31]);
01508       COMBA_FINI;
01509 
01510       B->used = 32;
01511       B->sign = FP_ZPOS;
01512       memcpy(B->dp, b, 32 * sizeof(fp_digit));
01513       fp_clamp(B);
01514       break;
01515 }
01516 }
01517 
01518 #endif /* TFM_SMALL_SET */
01519 
01520 /* $Source: /cvs/libtom/tomsfastmath/src/sqr/fp_sqr_comba_small_set.c,v $ */
01521 /* $Revision: 1.1 $ */
01522 /* $Date: 2007/02/15 00:31:32 $ */