#include <vector>
#include <sstream>
#include <string>
#include <iostream>
#include <iomanip>
#include <math.h>
#include "comun.hpp"
#include "Elias.hpp"
Ir al código fuente de este archivo.
Namespaces | |
namespace | Mt77 |
Funciones | |
unsigned int | techo_logb2 (unsigned long x) |
unsigned int | piso_logb2 (unsigned int n) |
unsigned long | pot2 (unsigned int e) |
string | vb2str (vector< bool > &vb) |
vector< bool > | str2vb (string s) |
void | codifica_unario (unsigned long x, vector< bool > &vb) |
unsigned long | decodifica_unario (vector< bool > &vb) |
void | pone_un_entero (unsigned long x, unsigned int nbits, vector< bool > &vb) |
unsigned long | toma_un_entero (unsigned int nbits, vector< bool > &vb) |
void | codifica_elias_gama (unsigned int x, vector< bool > &vb) |
unsigned long | decodifica_elias_gama (vector< bool > &vb) |
unsigned long | lee_elias_gama (std::istream &is) throw (string) |
unsigned long | lee_elias_gama2 (std::istream &is) throw (string) |
void | escribe_elias_gama (std::ostream &os, unsigned int n) |
void | escribe_elias_gama2 (std::ostream &os, unsigned int n) |
unsigned int | long_elias_gama (unsigned long n) |
void | codifica_binaria_minima (unsigned long x, unsigned int n, vector< bool > &vb) |
unsigned long | decodifica_binaria_minima (unsigned int n, vector< bool > &vb) |
Tomados de: Compression and coding algorithms Escrito por Alistair Moffat, Andrew Turpin
Definición en el archivo Elias.cpp.
void codifica_binaria_minima | ( | unsigned long | x, | |
unsigned int | n, | |||
vector< bool > & | vb | |||
) |
Convierte un entero menor o igual a n a su codificación binaria mínima
Definición en la línea 663 del archivo Elias.cpp.
Hace referencia a ASSERT, pone_un_entero(), pot2(), y techo_logb2().
Referenciado por EliasCasoPrueba::prueba_codifica_binaria_minima().
void codifica_elias_gama | ( | unsigned int | x, | |
vector< bool > & | vb | |||
) |
Convierte x a su codificación Gama de Elias.
Definición en la línea 283 del archivo Elias.cpp.
Hace referencia a ASSERT, codifica_unario(), piso_logb2(), pone_un_entero(), y pot2().
Referenciado por escribe_elias_gama(), y EliasCasoPrueba::prueba_codifica_elias_gama().
void codifica_unario | ( | unsigned long | x, | |
vector< bool > & | vb | |||
) |
Codifica entero largo x en unario como vector de booleanos
Definición en la línea 206 del archivo Elias.cpp.
Hace referencia a ASSERT.
Referenciado por codifica_elias_gama(), y EliasCasoPrueba::prueba_unario().
unsigned long decodifica_binaria_minima | ( | unsigned int | n, | |
vector< bool > & | vb | |||
) |
Convierte vb de codificación binaria mínima con máximo n a entero
Definición en la línea 678 del archivo Elias.cpp.
Hace referencia a ASSERT, pot2(), techo_logb2(), y toma_un_entero().
Referenciado por EliasCasoPrueba::prueba_decodifica_binaria_minima().
unsigned long decodifica_elias_gama | ( | vector< bool > & | vb | ) |
Convierte de codificaico gamma de Elias a entero
Definición en la línea 293 del archivo Elias.cpp.
Hace referencia a ASSERT, decodifica_unario(), pot2(), y toma_un_entero().
Referenciado por lee_elias_gama(), y EliasCasoPrueba::prueba_decodifica_elias_gama().
unsigned long decodifica_unario | ( | vector< bool > & | vb | ) |
Decodifica unario en vector de booleanos a entero
Definición en la línea 218 del archivo Elias.cpp.
Hace referencia a ASSERT.
Referenciado por decodifica_elias_gama(), y EliasCasoPrueba::prueba_unario().
void escribe_elias_gama | ( | std::ostream & | os, | |
unsigned int | n | |||
) |
Escribe al flujo os un entero en codificación gama de Elias.
os | Flujo de salida | |
n | Número por escribir |
Definición en la línea 541 del archivo Elias.cpp.
Hace referencia a ASSERT, y codifica_elias_gama().
Referenciado por numC(), y EliasCasoPrueba::prueba_escribe_elias_gama().
void escribe_elias_gama2 | ( | std::ostream & | os, | |
unsigned int | n | |||
) |
Escribe rapidamente al flujo os un entero en codificación gama de Elias.
os | Flujo de salida | |
n | Número por escribir |
Definición en la línea 575 del archivo Elias.cpp.
Hace referencia a ASSERT, y piso_logb2().
Referenciado por escribePos(), y EliasCasoPrueba::prueba_escribe_elias_gama2().
unsigned long lee_elias_gama | ( | std::istream & | is | ) | throw (string) |
Lee de un stream un número en codificación gama de elias, Lee hasta el último caracter que tenga bits del número, si hay más se pierden porque esta función no los retorna. Es decir sirve para codificar de a un número en uno o más bytes, Una secuencia de números quedará cada numero comenzando en un byte.
Definición en la línea 310 del archivo Elias.cpp.
Hace referencia a decodifica_elias_gama(), y errorFormato().
Referenciado por cNum(), y EliasCasoPrueba::prueba_lee_elias_gama().
unsigned long lee_elias_gama2 | ( | std::istream & | is | ) | throw (string) |
Lee rapidamente un número en codificación elias gama de un flujo.
is | flujo de entrada |
Definición en la línea 437 del archivo Elias.cpp.
Hace referencia a ASSERT, y errorFormato().
Referenciado por leePos(), y EliasCasoPrueba::prueba_lee_elias_gama2().
unsigned int long_elias_gama | ( | unsigned long | n | ) |
Retorna espacio que requeriría en un flujo codificar un número en codificación gama de Elías
n | número |
Definición en la línea 652 del archivo Elias.cpp.
Hace referencia a ASSERT, y piso_logb2().
Referenciado por longPos(), y EliasCasoPrueba::prueba_long_elias_gama().
unsigned int piso_logb2 | ( | unsigned int | n | ) |
http://en.wikipedia.org/wiki/Binary_logarithm
Definición en la línea 60 del archivo Elias.cpp.
Hace referencia a ASSERT.
Referenciado por codifica_elias_gama(), escribe_elias_gama2(), long_elias_gama(), y EliasCasoPrueba::prueba_piso_logb2().
void pone_un_entero | ( | unsigned long | x, | |
unsigned int | nbits, | |||
vector< bool > & | vb | |||
) |
Convierte un entero a binario de máximo nbits digitos
Definición en la línea 237 del archivo Elias.cpp.
Hace referencia a ASSERT, y pot2().
Referenciado por codifica_binaria_minima(), codifica_elias_gama(), y EliasCasoPrueba::prueba_pone_un_entero().
unsigned long pot2 | ( | unsigned int | e | ) |
Potencia de 2, pot2(e) es 2^e
Definición en la línea 86 del archivo Elias.cpp.
Hace referencia a ASSERT.
Referenciado por codifica_binaria_minima(), codifica_elias_gama(), decodifica_binaria_minima(), decodifica_elias_gama(), pone_un_entero(), EliasCasoPrueba::prueba_escribe_elias_gama(), EliasCasoPrueba::prueba_escribe_elias_gama2(), EliasCasoPrueba::prueba_lee_elias_gama(), EliasCasoPrueba::prueba_lee_elias_gama2(), EliasCasoPrueba::prueba_long_elias_gama(), y EliasCasoPrueba::prueba_pot2().
vector<bool> str2vb | ( | string | s | ) |
Convierte de cadena de unos y ceros a vector de booleanos
Definición en la línea 190 del archivo Elias.cpp.
Referenciado por EliasCasoPrueba::prueba_decodifica_binaria_minima(), EliasCasoPrueba::prueba_decodifica_elias_gama(), y EliasCasoPrueba::prueba_toma_un_entero().
unsigned int techo_logb2 | ( | unsigned long | x | ) |
Techo de logaritmo en base 2
Definición en la línea 29 del archivo Elias.cpp.
Hace referencia a ASSERT.
Referenciado por codifica_binaria_minima(), decodifica_binaria_minima(), y EliasCasoPrueba::prueba_techo_logb2().
unsigned long toma_un_entero | ( | unsigned int | nbits, | |
vector< bool > & | vb | |||
) |
Convierte un binario de máximo nbits digitos a entero
Definición en la línea 255 del archivo Elias.cpp.
Hace referencia a ASSERT.
Referenciado por decodifica_binaria_minima(), decodifica_elias_gama(), y EliasCasoPrueba::prueba_toma_un_entero().
string vb2str | ( | vector< bool > & | vb | ) |
Convierte de vector de booleanos a cadena de unos y ceros
Definición en la línea 177 del archivo Elias.cpp.
Referenciado por EliasCasoPrueba::prueba_codifica_binaria_minima(), EliasCasoPrueba::prueba_codifica_elias_gama(), EliasCasoPrueba::prueba_pone_un_entero(), y EliasCasoPrueba::prueba_unario().