00001 #include "Teuchos_TimeMonitor.hpp"
00002 #include "Teuchos_Version.hpp"
00003
00004 #ifdef HAVE_MPI
00005 #include <mpi.h>
00006 #endif
00007
00008 using namespace Teuchos;
00009
00010
00011 RCP<Time> CompTime = TimeMonitor::getNewTimer("Computational Time");
00012 RCP<Time> FactTime = TimeMonitor::getNewTimer("Factorial Time");
00013
00014
00015 double quadFunc( double x );
00016
00017
00018 double factFunc( int x );
00019
00020 int main(int argc, char* argv[])
00021 {
00022 std::cout << Teuchos::Teuchos_Version() << std::endl << std::endl;
00023
00024 int i;
00025 double x;
00026
00027 #ifdef HAVE_MPI
00028 MPI_Init(&argc, &argv);
00029 #endif
00030
00031
00032 for( i=-100; i<100; i++ ) {
00033 x = quadFunc( (double) i );
00034 }
00035
00036
00037 for( i=0; i<100; i++ ) {
00038 x = factFunc( i );
00039 }
00040
00041
00042 TimeMonitor::summarize();
00043
00044 #ifdef HAVE_MPI
00045 MPI_Finalize();
00046 #endif
00047
00048 return 0;
00049 }
00050
00051
00052 double quadFunc( double x )
00053 {
00054
00055 Teuchos::TimeMonitor LocalTimer(*CompTime);
00056
00057
00058 return ( x*x - 1.0 );
00059 }
00060
00061
00062 double factFunc( int x )
00063 {
00064
00065 Teuchos::TimeMonitor LocalTimer(*FactTime);
00066
00067
00068 if( x == 0 ) return 0.0;
00069 if( x == 1 ) return 1.0;
00070
00071
00072 return ( (double) x * factFunc(x-1) );
00073 }