Exemplo n.º 1
0
void optimise_aln(glam2_aln *best, data *d) {
  glam2_aln *aln = &d->aln;
  int no_improvement = 0;
  int i;

  aln_copy(aln, best);
  if (d->a.profile)
    fputs("Temperature, Columns, Sequences, Score:\n", d->out);

  for (i = 0; no_improvement < d->a.stop_after; ++i) {
    double temperature = d->a.temperature /
      xpow(d->a.cool, (double)i / d->a.stop_after);
    if (temperature < d->a.frozen)
      temperature = d->a.frozen;
    if (d->a.profile)
      fprintf(d->out, "%g\t%d\t%d\t%g\n",
	      temperature, aln->width, aln->aligned_seq, aln->score / xlog(2));
    /*
    print_aln(d->out, aln, d);
    */
    update_aln(aln, d, temperature);
    if (aln->score > best->score) {
      aln_copy(best, aln);
      no_improvement = 0;
    } else
      ++no_improvement;
  }

  if (d->a.profile)
    putc('\n', d->out);
  if (!d->a.quiet) fprintf(stderr, "%d iterations\n", i);
}
Exemplo n.º 2
0
float get_max_float() {
    /*
     * IEEE 754
     * 
     * float:
     * sign: 1bit, exp: 8bit, frac: 23bit
     *
     * F = (-1)^sign * frac * 2^exp
     */
    int exp_bit = 8;
    int frac_bit = 23;

    float frac = 1 - fpow(0.5, frac_bit);
    float true_frac = 1 + frac;

    int exp = xpow(2, exp_bit - 1) - 1;
    float times = fpow(2.0, exp);

    float max = true_frac * times;

    return max;
}
Exemplo n.º 3
0
void pow_dbl(double *ptr, const size_t size, const double x) {
  const double *end = ptr + size;
  assert(ptr != NULL || size == 0);
  for (; ptr != end; ++ptr)
    *ptr = xpow(*ptr, x);
}
Exemplo n.º 4
0
long get_max_by_size(long size) {
    long bits = size * CHAR_BIT;
    long max = xpow(2, bits - 1) - 1;
    return max;
}