Main Page | Modules | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

arak.cpp

Go to the documentation of this file.
00001 #include "geometry.hpp"
00002 #include "arak.hpp"
00003 
00004 using namespace Arak;
00005 using namespace Arak::Geometry;
00006 
00007 const double NEGATIVE_INFINITY = -1e10;
00008 
00009 void ArakPrior::initialize() {
00010   c.addListener(*this);
00011   sumLengths = 0.0;
00012   sumLogLengths = 0.0;
00013   sumLogSines = 0.0;
00014   for (int i = 0; i < c.numVertices(Coloring::Vertex::INTERIOR); i++)
00015     vertexHasBeenAdded(c.getVertex(Coloring::Vertex::INTERIOR, i));
00016   for (int i = 0; i < c.numVertices(Coloring::Vertex::BOUNDARY); i++)
00017     vertexHasBeenAdded(c.getVertex(Coloring::Vertex::BOUNDARY, i));
00018   for (int i = 0; i < c.numInteriorEdges(); i++)
00019     edgeHasBeenAdded(c.getInteriorEdge(i));
00020 }
00021 
00022 void ArakPrior::vertexHasBeenAdded(Coloring::VertexHandle vh) {
00023   sumLogSines += std::max(NEGATIVE_INFINITY, vh->logSine());
00024 }
00025 
00026 void ArakPrior::vertexWillBeRemoved(Coloring::VertexHandle vh) {
00027   sumLogSines -= std::max(NEGATIVE_INFINITY, vh->logSine());
00028 }
00029 
00030 void ArakPrior::edgeHasBeenAdded(Coloring::IntEdgeHandle eh) {
00031   // TODO: deal with numerical instability
00032   double length = eh->length();
00033   sumLengths += length;
00034   sumLogLengths += std::max(NEGATIVE_INFINITY, ln(length));
00035 }
00036     
00037 void ArakPrior::edgeWillBeRemoved(Coloring::IntEdgeHandle eh) {
00038   // std::cerr << sumLogSines << " " << sumLogLengths << std::endl;
00039   // TODO: deal with numerical instability
00040   double length = eh->length();
00041   sumLengths -= length;
00042   sumLogLengths -= std::max(NEGATIVE_INFINITY, ln(length));
00043 }
00044 
00045 double ArakPrior::logMeasure() const {
00046   return (c.numInteriorEdges() * ln(p) 
00047     - sumLogLengths 
00048     + sumLogSines);
00049 }
00050 
00051 
00052 
00053 

Generated on Wed May 25 14:39:15 2005 for Arak by doxygen 1.3.6