Changeset 288 in Sophya for trunk/SophyaLib/NTools/matrix.cc


Ignore:
Timestamp:
May 3, 1999, 6:55:25 PM (26 years ago)
Author:
ansari
Message:

grosses modif avec refonte code dans tmatrix cmv 3/5/99

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/NTools/matrix.cc

    r244 r288  
    1 // $Id: matrix.cc,v 1.2 1999-04-22 16:18:41 ansari Exp $
     1// $Id: matrix.cc,v 1.3 1999-05-03 16:55:21 ansari Exp $
    22
    33#include "machdefs.h"
     
    1010#include "cvector.h"
    1111#include "generalfit.h"
     12#include "tmatrix.h"
    1213
    1314// Sous Linux, LN_MAXDOUBLE LN_MINDOUBLE ne semblent pas etre definies
     
    4142//      Construit une matrice 1x1 (pour ppersist).
    4243//--
    43 : nr(1), nc(1), ndata(1), nalloc(1), data(new double[1])
     44: nr(1), nc(1), ndata(1), nalloc(1), data(new double[1]), FromTmatrix(false)
    4445{
    4546  // if (r<=0 || c<=0) THROW(rangeCheckErr);
     
    5354//      Construit une matrice de r lignes et c colonnes.
    5455//--
    55 : nr(r), nc(c), ndata(r*c), nalloc(r*c), data(new double[r*c])
     56: nr(r), nc(c), ndata(r*c), nalloc(r*c), data(new double[r*c]), FromTmatrix(false)
    5657{
    5758  // if (r<=0 || c<=0) THROW(rangeCheckErr);
     
    6667//      le tableau des valeurs : pas d'allocation.
    6768//--
    68 : nr(r), nc(c), ndata(r*c), nalloc(0), data(values)
     69: nr(r), nc(c), ndata(r*c), nalloc(0), data(values), FromTmatrix(false)
    6970{
    7071  END_CONSTRUCTOR
     
    7778//--
    7879: nr(a.nr), nc(a.nc), ndata(a.nr*a.nc), nalloc(a.nr*a.nc),
    79   data(new double[a.nr*a.nc])
     80  data(new double[a.nr*a.nc]), FromTmatrix(false)
    8081{
    8182  memcpy(data, a.data, nalloc * sizeof(double));
     
    8384}
    8485
     86//++
     87Matrix::Matrix(const TMatrix<r_8>& a)
     88//
     89//      Constructeur par copie a partir d'une TMatrix<r_8>.
     90//      Attention, les donnees sont partagees.
     91//--
     92: nr(a.NRows()), nc(a.NCols()), ndata(a.NRows()*a.NCols())
     93, nalloc(a.NRows()*a.NCols())
     94, data(const_cast<r_8 *>(a.Data()))
     95, FromTmatrix(true)
     96{
     97  END_CONSTRUCTOR
     98}
     99
    85100
    86101Matrix::~Matrix()
    87102{
    88103  DBASSERT(ndata == nr*nc);
    89   if (nalloc) delete[] data;
     104  if (nalloc && !FromTmatrix) delete[] data;
    90105}
    91106
     
    102117{
    103118  DBASSERT(ndata == nr*nc);
    104   for (int i=0; i<ndata; i++)
    105     data[i] = 0;
     119  for (int i=0; i<ndata; i++) data[i] = 0;
    106120}
    107121
Note: See TracChangeset for help on using the changeset viewer.