code: public int
      cmp( FDBigInt other ){
          int i;
          if ( this.nWords > other.nWords ){
              // if any of my high-order words is non-zero,
              // then the answer is evident
              int j = other.nWords-1;
              for ( i = this.nWords-1; i > j ; i-- )
                  if ( this.data[i] != 0 ) return 1;
          }else if ( this.nWords < other.nWords ){
              // if any of other's high-order words is non-zero,
              // then the answer is evident
              int j = this.nWords-1;
              for ( i = other.nWords-1; i > j ; i-- )
                  if ( other.data[i] != 0 ) return -1;
          } else{
              i = this.nWords-1;
          }
          for ( ; i > 0 ; i-- )
              if ( this.data[i] != other.data[i] )
                  break;
          // careful! want unsigned compare!
          // use brute force here.
          int a = this.data[i];
          int b = other.data[i];
          if ( a < 0 ){
              // a is really big, unsigned
              if ( b < 0 ){
                  return a-b; // both big, negative
              } else {
                  return 1; // b not big, answer is obvious;
              }
          } else {
              // a is not really big
              if ( b < 0 ) {
                  // but b is really big
                  return -1;
              } else {
                  return a - b;
              }
          }
      }
docs: /*
  Compare FDBigInt with another FDBigInt. Return an integer
  >0: this > other
  0: this == other
  <0: this < other