OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Private Attributes | List of all members
LogAndSign Class Reference

#include <newmat.h>

Public Member Functions

 LogAndSign ()
 
 LogAndSign (Real)
 
void operator*= (Real)
 
void PowEq (int k)
 
void ChangeSign ()
 
Real LogValue () const
 
int Sign () const
 
Real Value () const
 

Private Attributes

Real log_value
 
int sign
 

Detailed Description

Definition at line 39 of file newmat.h.

Constructor & Destructor Documentation

◆ LogAndSign() [1/2]

LogAndSign::LogAndSign ( )
inline

Definition at line 46 of file newmat.h.

References sign().

46 { log_value=0.0; sign=1; }
int sign
Definition: newmat.h:44
Real log_value
Definition: newmat.h:43

◆ LogAndSign() [2/2]

LogAndSign::LogAndSign ( Real  f)

Definition at line 641 of file newmat8.cpp.

References sign().

642 {
643  if (f == 0.0) { log_value = 0.0; sign = 0; return; }
644  else if (f < 0.0) { sign = -1; f = -f; }
645  else sign = 1;
646  log_value = log(f);
647 }
int sign
Definition: newmat.h:44
Real log_value
Definition: newmat.h:43

Member Function Documentation

◆ ChangeSign()

void LogAndSign::ChangeSign ( )
inline

Definition at line 50 of file newmat.h.

References sign().

Referenced by CroutMatrix::LogDeterminant(), and BandLUMatrix::LogDeterminant().

50 { sign = -sign; }
int sign
Definition: newmat.h:44

◆ LogValue()

Real LogAndSign::LogValue ( ) const
inline

Definition at line 51 of file newmat.h.

51 { return log_value; }
Real log_value
Definition: newmat.h:43

◆ operator*=()

void LogAndSign::operator*= ( Real  x)

Definition at line 617 of file newmat8.cpp.

References sign(), and x.

618 {
619  if (x > 0.0) { log_value += log(x); }
620  else if (x < 0.0) { log_value += log(-x); sign = -sign; }
621  else sign = 0;
622 }
ossim_uint32 x
int sign
Definition: newmat.h:44
Real log_value
Definition: newmat.h:43

◆ PowEq()

void LogAndSign::PowEq ( int  k)

Definition at line 624 of file newmat8.cpp.

References sign().

Referenced by IdentityMatrix::LogDeterminant().

625 {
626  if (sign)
627  {
628  log_value *= k;
629  if ( (k & 1) == 0 ) sign = 1;
630  }
631 }
int sign
Definition: newmat.h:44
Real log_value
Definition: newmat.h:43

◆ Sign()

int LogAndSign::Sign ( ) const
inline

Definition at line 52 of file newmat.h.

References sign().

52 { return sign; }
int sign
Definition: newmat.h:44

◆ Value()

Real LogAndSign::Value ( ) const

Definition at line 633 of file newmat8.cpp.

References sign().

Referenced by BaseMatrix::Determinant().

634 {
635  Tracer et("LogAndSign::Value");
636  if (log_value >= FloatingPointPrecision::LnMaximum())
637  Throw(OverflowException("Overflow in exponential"));
638  return sign * exp(log_value);
639 }
int sign
Definition: newmat.h:44
Real log_value
Definition: newmat.h:43

Member Data Documentation

◆ log_value

Real LogAndSign::log_value
private

Definition at line 43 of file newmat.h.

◆ sign

int LogAndSign::sign
private

Definition at line 44 of file newmat.h.


The documentation for this class was generated from the following files: