From 320110cd310378f60aa392e3c9e2216c39a0d396 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (laptop)" <j.wuttke@fz-juelich.de> Date: Tue, 4 May 2010 10:53:03 +0200 Subject: [PATCH] restored oi and oixy (untested) --- pub/src/opr.cpp | 129 +++++++++++++++++++------------------------ pub/src/special2.cpp | 2 +- 2 files changed, 57 insertions(+), 74 deletions(-) diff --git a/pub/src/opr.cpp b/pub/src/opr.cpp index 7d1d11c0..9ead5396 100644 --- a/pub/src/opr.cpp +++ b/pub/src/opr.cpp @@ -168,7 +168,9 @@ void NOperate::Pointwise( string llabel ) POlc fc = P2C( fin ); POlo fout( fin->new_olo() ); - fout->lDoc.push_back( "o" + lref.ref_info() + " " + expr); + + if( lref.var!=CRef::_FP ) + fout->lDoc.push_back( "o" + lref.ref_info() + " " + expr); if ( lref.pointwise() && !fd ) throw string( "no pointwise operation on curve" ); @@ -233,67 +235,57 @@ void NOperate::Integral(void) { NOlm::SelAssert(); - throw string( "TODO broken after V rewrite" ); -/* string expr = sask( "Functional ?" ); if ( expr=="" ) return; PTree T; user_xaxparse( expr.c_str(), &T ); - NOlm::IterateD fiter; - COld *fin, fout; - COlo *f; - CSpec S; - CCoord zco; - double xval, zval, result; - bool savable; - uint k, nz; + NOlm::IterateO fiter; + POlo fin; while( (fin=fiter()) ) { - k = fiter.k(); - nz = fin->ZCo.size(); - savable = nz > 0; + uint k = fiter.k(); + uint nz = fin->ZCo.size(); + bool savable = nz > 0; - fout = *fin; - f = (COlo*) fin; - fout->VS.clear(); - if (savable) { - fout->lDoc.push_back( "oi " +expr ); + POld fd = P2D( fin ); + POlc fc = P2C( fin ); - zco = fin->ZCo.back(); - fout->ZCo.pop_back(); - fout->xco = zco; + POlo fout( fin->new_olo() ); - T->coord(&(fout->yco), k); - } + fout->lDoc.push_back( "oi " +expr ); + + fout->ZCo.pop_back(); + fout->xco = fin->ZCo.back(); + T->coord( &(fout->yco), k ); + + PSpec sout( new CSpec ); + sout->z = fin->V[0]->z; + sout->z.pop_back(); - S.clear(); - S.z = fin->VS[0].z; - S.z.pop_back(); - for ( uint j=0; j<fin->nSpec(); j++ ) { + for ( uint j=0; j<fin->nJ(); j++ ) { + double xval, zval, result; T->tree_point_val( &result, k, j ); if (!savable) { - cout << "results: " << result << "\n"; - break; + cout << "result: " << result << "\n"; + continue; } - xval = fin->VS[j].z[nz-1]; - S.push_xy( xval, result ); + xval = fin->V[j]->z[nz-1]; + sout->push_xy( xval, result ); if (nz>=2) { // new spectrum if jump in other z values - zval = fin->VS[j].z[nz-2]; - if ((j+1)<fin->VS.size() && - fin->VS[j+1].z[nz-2]!=zval) { - fout->VS.push_back( S ); - S.clear(); - S.z = fin->VS[j+1].z; - S.z.pop_back(); + zval = fin->V[j]->z[nz-2]; + if ( j+1 < fin->nJ() && fin->V[j+1]->z[nz-2] != zval ) { + fout->V.push_back( sout ); + sout = PSpec( new CSpec ); + sout->z = fin->V[j+1]->z; + sout->z.pop_back(); } } } if ( savable ) { - fout->VS.push_back( S ); - NOlm::OloAdd( fout ); + fout->V.push_back( sout ); + NOlm::OloAdd( fout, fiter.k() ); } } -*/ }; @@ -303,8 +295,6 @@ void NOperate::IntXY(void) { NOlm::SelAssert(); - throw string( "TODO broken after V rewrite" ); -/* static int icolx = 0, icoly = 1; static CCoord xco, yco; icolx = iask( "x from column", icolx ); @@ -315,49 +305,42 @@ void NOperate::IntXY(void) yco = CCoord( "y", "" ); // .Ask( "y coordinate", ASK_DEF_GIVEN, yco ); NOlm::IterateD fiter; - COld *fin, fout; - COlo *f; - CSpec S; - CCoord zco; - double zval; - uint k, nz, n; + POld fin; while( (fin=fiter()) ) { - k = fiter.k(); - nz = fin->ZCo.size(); + uint nz = fin->ZCo.size(); if( nz<1 ) throw "no z in file " + strg(fiter.k()); - fout = *fin; - f = (COlo*) fin; - fout->VS.clear(); + + POld fout( new COld( *fin ) ); + fout->V.clear(); fout->lDoc.push_back( "oixy " + strg(icolx) + " " + strg(icoly) ); + fout->ZCo.pop_back(); fout->xco = xco; fout->yco = yco; - S.clear(); - if( !(fin->nSpec()) ) - throw string( "input file has no spectra" ); - S.z = fin->VS[0].z; - S.z.pop_back(); - for (uint j=0; j<fin->nSpec(); j++) { - n = fin->VS[j].size(); + + PSpec sout( new CSpec ); + sout->z = fin->V[0]->z; + sout->z.pop_back(); + + for ( uint j=0; j<fin->nJ(); j++ ) { + uint n = fin->nPts(j); if( icolx>=n || icoly>=n ) throw "not enough columns in spectrum " + strg(j); - S.push_xy( fin->VS[j].y[icolx], fin->VS[j].y[icoly] ); + sout->push_xy( fin->VS(j)->y[icolx], fin->VS(j)->y[icoly] ); if (nz>=2) { // new spectrum if jump in other z values - zval = fin->VS[j].z[nz-2]; - if ((j+1)<fin->VS.size() && - fin->VS[j+1].z[nz-2]!=zval) { - fout->VS.push_back(S); - S.clear(); - S.z = fin->VS[j+1].z; - S.z.pop_back(); + double zval = fin->V[j]->z[nz-2]; + if ( j+1 < fin->nJ() && fin->V[j+1]->z[nz-2] != zval) { + fout->V.push_back( sout ); + sout = PSpec( new CSpec ); + sout->z = fin->V[j+1]->z; + sout->z.pop_back(); } } } - fout->VS.push_back(S); - NOlm::OloAdd( fout ); + fout->V.push_back( sout ); + NOlm::OloAdd( fout, fiter.k() ); } -*/ }; diff --git a/pub/src/special2.cpp b/pub/src/special2.cpp index f43ddcc4..54b86bcc 100644 --- a/pub/src/special2.cpp +++ b/pub/src/special2.cpp @@ -46,7 +46,7 @@ void NSpecial::FourierCosine(void) n = sin->size(); plan = fftw_plan_r2r_1d( - n, &(Sin->y[0]), &(Sout->y[0]), + n, &(sin->y[0]), &(sout->y[0]), FFTW_REDFT00, FFTW_ESTIMATE); nold = n; // currently not used fftw_execute( plan ); -- GitLab