Changeset 2179 in Sophya for trunk/SophyaPI/ProgPI/skymapmodule.cc
- Timestamp:
- Aug 13, 2002, 12:38:56 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/ProgPI/skymapmodule.cc
r2178 r2179 68 68 void ClOper(vector<string>& tokens); 69 69 void ClRebin(vector<string>& tokens); 70 void VarOper(vector<string>& tokens);71 70 protected: 72 71 void SetTypeMap(vector<string>& tokens); … … 256 255 mpiac->RegisterCommand(kw, usage, this, hgrp); 257 256 258 kw = "varop";259 usage = "operation on variables";260 usage += "\n Usage: varop var1 op var2 [resultvarname]";261 usage += "\n Do result = var1 op var2";262 usage += "\n where op = +,-,*,/,^(pow),exp,sqrt,log,log10";263 usage += "\n resultvarname = variable name to store the result";264 mpiac->RegisterCommand(kw, usage, this, hgrp);265 266 257 DefTypMap = HealPix; 267 258 } … … 416 407 } 417 408 ClRebin(tokens); 418 } else if(kw == "varop") {419 if(tokens.size()<2) {420 cout<<"Usage: varop var1 op var2 [resultvarname]"<<endl;421 return(0);422 }423 VarOper(tokens);424 409 } 425 410 … … 610 595 if(tokens.size()>2) { 611 596 if(omg.HasVar(tokens[2])) omg.DeleteVar(tokens[2]); 612 char str[ 128]; sprintf(str,"%g",per);597 char str[512]; sprintf(str,"%g",per); 613 598 omg.SetVar(tokens[2],(string)str); 614 599 cout<<" stored into $"<<tokens[2]; … … 1160 1145 if(tokens.size()>2) if(tokens[2][0]!='!') { 1161 1146 if(omg.HasVar(tokens[2])) omg.DeleteVar(tokens[2]); 1162 char str[ 128]; sprintf(str,"%.8f",sum);1147 char str[512]; sprintf(str,"%.8f",sum); 1163 1148 omg.SetVar(tokens[2],(string)str); 1164 1149 cout<<" mean stored into $"<<tokens[2]; … … 1166 1151 if(tokens.size()>3) if(tokens[3][0]!='!') { 1167 1152 if(omg.HasVar(tokens[3])) omg.DeleteVar(tokens[3]); 1168 char str[ 128]; sprintf(str,"%.8f",sum2);1153 char str[512]; sprintf(str,"%.8f",sum2); 1169 1154 omg.SetVar(tokens[3],(string)str); 1170 1155 cout<<" sigma stored into $"<<tokens[3]; … … 1270 1255 if(tokens.size()>2) { 1271 1256 if(omg.HasVar(tokens[2])) omg.DeleteVar(tokens[2]); 1272 char str[ 128]; sprintf(str,"%.8f",mean);1257 char str[512]; sprintf(str,"%.8f",mean); 1273 1258 omg.SetVar(tokens[2],(string)str); 1274 1259 cout<<" stored into $"<<tokens[2]; … … 1402 1387 } 1403 1388 1404 /* --Methode-- */1405 void skymapmoduleExecutor::VarOper(vector<string>& tokens)1406 {1407 NamedObjMgr omg;1408 1409 double var1=0., var2=0.; string op = "?";1410 if(tokens.size()>0) var1 = atof(tokens[0].c_str());1411 if(tokens.size()>1) op = tokens[1];1412 if(tokens.size()>2) if(tokens[2][0]!='!') var2 = atof(tokens[2].c_str());1413 1414 double result = 0.;1415 try {1416 if(op=="+") result = var1 + var2;1417 else if(op=="-") result = var1 - var2;1418 else if(op=="*") result = var1 * var2;1419 else if(op=="/" && var2!=0.) result = var1 / var2; else if(op=="^" && var2>0.) result = pow(var1,var2);1420 else if(op=="pow" && var2>0.) result = pow(var1,var2);1421 else if(op=="exp") result = exp(var1);1422 else if(op=="sqrt" && var1>0.) result = sqrt(var1);1423 else if(op=="log" && var1>0.) result = log(var1);1424 else if(op=="log10" && var1>0.) result = log10(var1);1425 } catch ( ... ) {1426 cout<<"An operation exception occurs"<<endl;1427 return;1428 }1429 1430 cout<<"VarOper: "<<var1<<" "<<op<<" "<<var2<<" = "<<result;1431 1432 if(tokens.size()>3) {1433 if(omg.HasVar(tokens[3])) omg.DeleteVar(tokens[3]);1434 char str[128]; sprintf(str,"%.8f",result);1435 omg.SetVar(tokens[3],(string)str);1436 cout<<" stored into $"<<tokens[3];1437 }1438 cout<<endl;1439 1440 }1441 1442 1389 //////////////////////////////////////////////////////////// 1443 1390
Note:
See TracChangeset
for help on using the changeset viewer.