text: #define TFM_DEFINES
  #include "fp_sqr_comba.c"
  
  #ifdef TFM_SQR9
  void fp_sqr_comba9( const fp_int *A, fp_int *B )
  {
     fp_digit *a, b[18], c0, c1, c2, sc0, sc1, sc2;
     
     sc0 = sc1 = sc2 = 0;
  #ifdef TFM_ISO
     fp_word tt;
  #endif
  
     a = A->dp;
     COMBA_START; 
  
     /* clear carries */
     CLEAR_CARRY;
  
     /* output 0 */
     SQRADD(a[0],a[0]);
     COMBA_STORE(b[0]);
  
     /* output 1 */
     CARRY_FORWARD;
     SQRADD2(a[0], a[1]); 
     COMBA_STORE(b[1]);
  
     /* output 2 */
     CARRY_FORWARD;
     SQRADD2(a[0], a[2]); SQRADD(a[1], a[1]); 
     COMBA_STORE(b[2]);
  
     /* output 3 */
     CARRY_FORWARD;
     SQRADD2(a[0], a[3]); SQRADD2(a[1], a[2]); 
     COMBA_STORE(b[3]);
  
     /* output 4 */
     CARRY_FORWARD;
     SQRADD2(a[0], a[4]); SQRADD2(a[1], a[3]); SQRADD(a[2], a[2]); 
     COMBA_STORE(b[4]);
  
     /* output 5 */
     CARRY_FORWARD;
     SQRADDSC(a[0], a[5]); SQRADDAC(a[1], a[4]); SQRADDAC(a[2], a[3]); SQRADDDB; 
     COMBA_STORE(b[5]);
  
     /* output 6 */
     CARRY_FORWARD;
     SQRADDSC(a[0], a[6]); SQRADDAC(a[1], a[5]); SQRADDAC(a[2], a[4]); SQRADDDB; SQRADD(a[3], a[3]); 
     COMBA_STORE(b[6]);
  
     /* output 7 */
     CARRY_FORWARD;
     SQRADDSC(a[0], a[7]); SQRADDAC(a[1], a[6]); SQRADDAC(a[2], a[5]); SQRADDAC(a[3], a[4]); SQRADDDB; 
     COMBA_STORE(b[7]);
  
     /* output 8 */
     CARRY_FORWARD;
     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]); 
     COMBA_STORE(b[8]);
  
     /* output 9 */
     CARRY_FORWARD;
     SQRADDSC(a[1], a[8]); SQRADDAC(a[2], a[7]); SQRADDAC(a[3], a[6]); SQRADDAC(a[4], a[5]); SQRADDDB; 
     COMBA_STORE(b[9]);
  
     /* output 10 */
     CARRY_FORWARD;
     SQRADDSC(a[2], a[8]); SQRADDAC(a[3], a[7]); SQRADDAC(a[4], a[6]); SQRADDDB; SQRADD(a[5], a[5]); 
     COMBA_STORE(b[10]);
  
     /* output 11 */
     CARRY_FORWARD;
     SQRADDSC(a[3], a[8]); SQRADDAC(a[4], a[7]); SQRADDAC(a[5], a[6]); SQRADDDB; 
     COMBA_STORE(b[11]);
  
     /* output 12 */
     CARRY_FORWARD;
     SQRADD2(a[4], a[8]); SQRADD2(a[5], a[7]); SQRADD(a[6], a[6]); 
     COMBA_STORE(b[12]);
  
     /* output 13 */
     CARRY_FORWARD;
     SQRADD2(a[5], a[8]); SQRADD2(a[6], a[7]); 
     COMBA_STORE(b[13]);
  
     /* output 14 */
     CARRY_FORWARD;
     SQRADD2(a[6], a[8]); SQRADD(a[7], a[7]); 
     COMBA_STORE(b[14]);
  
     /* output 15 */
     CARRY_FORWARD;
     SQRADD2(a[7], a[8]); 
     COMBA_STORE(b[15]);
  
     /* output 16 */
     CARRY_FORWARD;
     SQRADD(a[8], a[8]); 
     COMBA_STORE(b[16]);
     COMBA_STORE2(b[17]);
     COMBA_FINI;
  
     B->used = 18;
     B->sign = FP_ZPOS;
     memcpy(B->dp, b, 18 * sizeof(fp_digit));
     fp_clamp(B);
  }
  #endif
  
  
  /* $Source: /cvs/libtom/tomsfastmath/src/sqr/fp_sqr_comba_9.c,v $ */
  /* $Revision: 1.2 $ */
  /* $Date: 2007/02/17 03:39:01 $ */
  