#include <memory.h>
#include "mathdefs.h"
+#include <creaSystem.h>
+
using namespace std;
namespace gtm
*/
template< class T >
inline
- void VectorPrint( std::ostream& o, T* v, uint n, bool col )
+ void VectorPrint( std::ostream& o, T* v, uint32_t n, bool col )
{
- uint i;
+ uint32_t i;
o << n << ": [";
if( col ) o << endl;
else o << " ";
- for( uint i = 0; i < n; i++ ) {
+ for( uint32_t i = 0; i < n; i++ ) {
o << v[ i ];
if( col ) o << endl;
*/
template< class T >
inline
- T* VectorAllocateMemory( uint n )
+ T* VectorAllocateMemory( uint32_t n )
{
T* v = new T[ n ];
*/
template< class T >
inline
- void VectorAssignMemory( T* v, T* v_o, uint n )
+ void VectorAssignMemory( T* v, T* v_o, uint32_t n )
{
memcpy( v, v_o, sizeof( T ) * n );
*/
template< class T >
inline
- T* VectorCopyMemory( T* v, uint n )
+ T* VectorCopyMemory( T* v, uint32_t n )
{
T* n_v = VectorAllocateMemory< T >( n );
VectorAssignMemory< T >( n_v, v, n );
*/
template< class T >
inline
- void VectorAssignScalar( T* v, T s, uint n )
+ void VectorAssignScalar( T* v, T s, uint32_t n )
{
- uint i;
+ uint32_t i;
for( i = 0; i < n; v[ i ] = s, i++ );
*/
template< class T >
inline
- void VectorMatrixCast( T** ma, T* v, uint n, uint m, bool col )
+ void VectorMatrixCast( T** ma, T* v, uint32_t n, uint32_t m, bool col )
{
- uint i;
+ uint32_t i;
for( i = 0; i < ( ( col )? m: n ); i++ )
ma[ ( col )? n: i ][ ( col )? i: m ] = v[ i ];
*/
template< class T >
inline
- void VectorAdd( T* v, T* v_l, T* v_r, uint n )
+ void VectorAdd( T* v, T* v_l, T* v_r, uint32_t n )
{
- uint i;
+ uint32_t i;
for( i = 0; i < n; v[ i ] = v_l[ i ] + v_r[ i ], i++ );
*/
template< class T >
inline
- void VectorSubtract( T* v, T* v_l, T* v_r, uint n )
+ void VectorSubtract( T* v, T* v_l, T* v_r, uint32_t n )
{
- uint i;
+ uint32_t i;
for( i = 0; i < n; v[ i ] = v_l[ i ] - v_r[ i ], i++ );
*/
template< class T >
inline
- T VectorDotProduct( T* v_l, T* v_r, uint n )
+ T VectorDotProduct( T* v_l, T* v_r, uint32_t n )
{
T ret;
- uint i;
+ uint32_t i;
for( i = 0, ret = ( T )0; i < n; ret = ret + ( v_l[ i ] * v_r[ i ] ), i++ );
return( ret );
*/
template< class T >
inline
- void VectorScalarProduct( T* v, T* v_l, T s, uint n )
+ void VectorScalarProduct( T* v, T* v_l, T s, uint32_t n )
{
- uint i;
+ uint32_t i;
for( i = 0; i < n; v[ i ] = v_l[ i ] * s, i++ );
*/
template< class T >
inline
- T VectorNorm( T* v, uint n )
+ T VectorNorm( T* v, uint32_t n )
{
return( ( T )( sqrt( ( double )( VectorDotProduct< T >( v, v, n ) ) ) ) );
*/
template< class T >
inline
- void VectorNormalize( T* v, T* v_o, uint n )
+ void VectorNormalize( T* v, T* v_o, uint32_t n )
{
- uint i;
+ uint32_t i;
T norm = VectorNorm< T >( v_o, n );
norm = ( norm == ( T )0 )? ( T )1: norm;
*/
template< class T >
inline
- void MatrixPrint( std::ostream& o, T** ma, uint n, uint m )
+ void MatrixPrint( std::ostream& o, T** ma, uint32_t n, uint32_t m )
{
- uint i, j;
+ uint32_t i, j;
o << n << " x " << m << endl;
for( j = 0; j < m; j++ ) {
*/
template< class T >
inline
- T** MatrixAllocateMemory( uint n, uint m )
+ T** MatrixAllocateMemory( uint32_t n, uint32_t m )
{
- uint i;
+ uint32_t i;
T** ma = new T*[ n ];
for( i = 0; i < n; i++ ) {
*/
template< class T >
inline
- void MatrixAssignMemory( T** ma, T** ma_o, uint n, uint m )
+ void MatrixAssignMemory( T** ma, T** ma_o, uint32_t n, uint32_t m )
{
- uint i;
+ uint32_t i;
for( i = 0; i < n; i++ )
memcpy( ma[ i ], ma_o[ i ], sizeof( T ) * m );
*/
template< class T >
inline
- T** MatrixCopyMemory( T** ma, uint n, uint m )
+ T** MatrixCopyMemory( T** ma, uint32_t n, uint32_t m )
{
T** n_ma = MatrixAllocateMemory< T >( n, m );
MatrixAssignMemory< T >( n_ma, ma, n, m );
*/
template< class T >
inline
- void MatrixAssignScalar( T** ma, T s, uint n, uint m )
+ void MatrixAssignScalar( T** ma, T s, uint32_t n, uint32_t m )
{
- uint i, j;
+ uint32_t i, j;
for( i = 0; i < n; i++ )
for( j = 0; j < m; j++ )
*/
template< class T >
inline
- void MatrixVectorCast( T* v, T** ma, uint n, uint m, bool col )
+ void MatrixVectorCast( T* v, T** ma, uint32_t n, uint32_t m, bool col )
{
- uint i;
+ uint32_t i;
for( i = 0; i < ( ( col )? m: n ); i++ )
v[ i ] = ma[ ( col )? n: i ][ ( col )? i: m ];
*/
template< class T >
inline
- void MatrixFreeMemory( T** ma, uint n )
+ void MatrixFreeMemory( T** ma, uint32_t n )
{
- uint i;
+ uint32_t i;
if( ma ) {
*/
template< class T >
inline
- void MatrixAdd( T** ma, T** ma_l, T** ma_r, uint n, uint m )
+ void MatrixAdd( T** ma, T** ma_l, T** ma_r, uint32_t n, uint32_t m )
{
- uint i, j;
+ uint32_t i, j;
for( i = 0; i < n; i++ )
for( j = 0; j < m; ma[ i ][ j ] = ma_l[ i ][ j ] + ma_r[ i ][ j ], j++ );
*/
template< class T >
inline
- void MatrixSubtract( T** ma, T** ma_l, T** ma_r, uint n, uint m )
+ void MatrixSubtract( T** ma, T** ma_l, T** ma_r, uint32_t n, uint32_t m )
{
- uint i, j;
+ uint32_t i, j;
for( i = 0; i < n; i++ )
for( j = 0; j < m; ma[ i ][ j ] = ma_l[ i ][ j ] - ma_r[ i ][ j ], j++ );
*/
template< class T >
inline
- void MatrixProduct( T** ma, T** ma_l, T** ma_r, uint n, uint m, uint nr )
+ void MatrixProduct( T** ma, T** ma_l, T** ma_r, uint32_t n, uint32_t m, uint32_t nr )
{
unsigned i, j, k;
*/
template< class T >
inline
- void MatrixScalarProduct( T** ma, T** ma_l, T s, uint n, uint m )
+ void MatrixScalarProduct( T** ma, T** ma_l, T s, uint32_t n, uint32_t m )
{
- uint i, j;
+ uint32_t i, j;
for( i = 0; i < n; i++ )
for( j = 0; j < m; ma[ i ][ j ] = ma_l[ i ][ j ] * s, j++ );
*/
template< class T >
inline
- void MatrixCofactor( T** ma, T** ma_o, uint i, uint j, uint n, uint m )
+ void MatrixCofactor( T** ma, T** ma_o, uint32_t i, uint32_t j, uint32_t n, uint32_t m )
{
- uint k, l;
+ uint32_t k, l;
for( k = 0; k < i; k++ ) {
*/
template< class T >
inline
- T MatrixDeterminant( T** ma, uint n )
+ T MatrixDeterminant( T** ma, uint32_t n )
{
- uint k;
+ uint32_t k;
T** tmp = NULL;
T ret = ( T )0, c;
*/
template< class T >
inline
- void MatrixInverseAdjoint( T** ma, T** ma_o, uint n )
+ void MatrixInverseAdjoint( T** ma, T** ma_o, uint32_t n )
{
- uint i, j;
+ uint32_t i, j;
T** tmp;
T c;
*/
template< class T >
inline
- void MatrixInverseGauss( T** ma, T** ma_o, uint n )
+ void MatrixInverseGauss( T** ma, T** ma_o, uint32_t n )
{
- uint i, j, k, n2 = 2 * n;
+ uint32_t i, j, k, n2 = 2 * n;
T** ma_a = MatrixAllocateMemory< T >( n2, n );
T a, b;
*/
template< class T >
inline
- void MatrixTranspose( T** ma, T** ma_o, uint n, uint m )
+ void MatrixTranspose( T** ma, T** ma_o, uint32_t n, uint32_t m )
{
- uint i, j;
+ uint32_t i, j;
for( i = 0; i < m; i++ )
for( j = 0; j < n; ma[ i ][ j ] = ma_o[ j ][ i ], j++ );
*/
template< class T >
inline
- void MatrixLoadIdentity( T** ma, uint n )
+ void MatrixLoadIdentity( T** ma, uint32_t n )
{
- uint i, j;
+ uint32_t i, j;
for( i = 0; i < n; i++ )
for( j = 0; j < n; ma[ i ][ j ] = ( i == j )? ( T )1: ( T )0, j++ );