Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F88159590
miscm.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Thu, Oct 17, 03:33
Size
2 KB
Mime Type
text/x-c
Expires
Sat, Oct 19, 03:33 (2 d)
Engine
blob
Format
Raw Data
Handle
21724132
Attached To
rLAMMPS lammps
miscm.h
View Options
/***************************************************************************
miscm.h
-------------------
W. Michael Brown
Miscellaneous functions that do not deserve their own class
__________________________________________________________________________
This file is part of the Math Library
__________________________________________________________________________
begin : May 30 2003
copyright : (C) 2003 by W. Michael Brown
email : wmbrown@sandia.gov
***************************************************************************/
#ifndef MISCM_H
#define MISCM_H
#include <float.h>
#include <math.h>
#include <vector>
#include "error.h"
using
namespace
std
;
/// Miscellaneous functions that do not deserve their own class
/** \e a contains functions for \n
* - simple math functions
* - finite precision stuff */
namespace
am
{
/// Returns the square of a number
double
square
(
double
);
/// Rounds a number
double
round
(
double
);
/// Return the range of elements in a vector (0 if empty)
double
range
(
const
vector
<
double
>
&
v
);
/// Return the average of elements in a vector (0 if empty)
double
mean
(
const
vector
<
double
>
&
v
);
/// Return the max of two objects
template
<
class
numtyp
>
numtyp
max
(
numtyp
one
,
numtyp
two
);
/// Return the min of two objects
template
<
class
numtyp
>
numtyp
min
(
numtyp
one
,
numtyp
two
);
/// Return the -1 for negative, 0 for zero, and 1 for positive
int
sign
(
double
v
);
/// Swap two objects
void
swap
(
double
a
,
double
b
);
// Finite Precision stuff
/// Returns a number representing zero for finite checks
double
epsilon
(
double
number
);
/// Returns number closer to zero by the smallest interval possible
double
minus_eps
(
double
number
);
/// Returns number farther from zero by the smallest interval possible
double
plus_eps
(
double
number
);
/// Returns number farther from zero by smallest interval * \b m
double
plus_Meps
(
double
m
,
double
number
);
/// Returns number farther from zero by smallest interval * 10^8
double
plus_2eps
(
double
number
);
/// Returns number closer to zero by smallest interval * 10^8
double
minus_2eps
(
double
number
);
/// Returns false if the number is stored as NAN
bool
not_nan
(
double
number
);
// Matrix stuff
/// Invert a matrix (Gauss-Jordan)
/** Generates error 303 L 9 for singular matrix
* No checking for memory limitations **/
void
invert
(
double
**
matrix
,
unsigned
size
,
Error
&
error
);
/// Move a value from a fraction of one range to a fraction of another
/** am::rerange(0,1,0.3,0,100) will return 30. No checking to enforce
* that the value actually lies within the range is made. **/
double
rerange
(
double
one_start
,
double
one_end
,
double
value
,
double
two_start
,
double
two_end
);
}
#endif
Event Timeline
Log In to Comment