2002

Grusel++ of the month

Home
Download Source
/******************************************************************************/
/*                                                                            */
/*                                                             FILE: june.cpp */
/*                                                                            */
/*  I finally found an application for the C++ complex                        */
/*  ==================================================                        */
/*                                                                            */
/*  Compiled and tested with Visual C++ V6.0                                  */
/*                                                                            */
/*  V1.00   30-JUN-2002   P. Tellenbach   https://www.heimetli.ch/            */
/*                                                                            */
/******************************************************************************/

#include <iostream>
#include <complex>
#include <algorithm>

using namespace std ;

#define CONSTANT complex<double>(0,0.448798950512827605494663340468)

complex<double> table[] = { complex<double>( 581.2500,    0.0000),
                            complex<double>(-164.0940, -125.6900), 
                            complex<double>(  18.7120, -242.6540), 
                            complex<double>( -22.7807,  -25.1399), 
                            complex<double>(  72.1255,   32.4917), 
                            complex<double>( -27.1256, -113.7790), 
                            complex<double>( -29.8375,   17.3722), 
                            complex<double>(  77.5000,    1.383845e-014) } ;

class Function
{
   protected:
      double value ;
      int    index ;
      double loop ;

   public:
      Function( int l ) : value(0.0), index(0), loop(l)
      {
      }

      void operator()( const complex<double> &cplx )
      {
         value += real( cplx * exp( CONSTANT * loop * (double)index++) ) ;
      }

   friend ostream &operator<<( ostream &os, Function &func )
   {
      os << (char)(func.value / 7) ;
      return os ;
   }
} ;

int main( )
{
   for( int k = 0; k < 14; k++ )
     cout << for_each( table, table + 8, Function(k) ) ;

   return 0 ;
}

Update 30. June 2022

The compiler produced an impressive error message with 265 lines! This was fixed by adding a single const...

/******************************************************************************/
/*                                                                            */
/*                                                             FILE: june.cpp */
/*                                                                            */
/*  I finally found an application for the C++ complex                        */
/*  ==================================================                        */
/*                                                                            */
/*  Compiled and tested with Visual C++ V6.0                                  */
/*                                                                            */
/*  V1.00   30-JUN-2002   P. Tellenbach   https://www.heimetli.ch/            */
/*                                                                            */
/*  Compiled and tested with g++ 10.2.1                                       */
/*                                                                            */
/*  V1.10   30-JUN-2022   P. Tellenbach   https://www.heimetli.ch/            */
/*                                                                            */
/******************************************************************************/

#include <iostream>
#include <complex>
#include <algorithm>

using namespace std ;

#define CONSTANT complex<double>(0,0.448798950512827605494663340468)

complex<double> table[] = { complex<double>( 581.2500,    0.0000),
                            complex<double>(-164.0940, -125.6900), 
                            complex<double>(  18.7120, -242.6540), 
                            complex<double>( -22.7807,  -25.1399), 
                            complex<double>(  72.1255,   32.4917), 
                            complex<double>( -27.1256, -113.7790), 
                            complex<double>( -29.8375,   17.3722), 
                            complex<double>(  77.5000,    1.383845e-014) } ;

class Function
{
   protected:
      double value ;
      int    index ;
      double loop ;

   public:
      Function( int l ) : value(0.0), index(0), loop(l)
      {
      }

      void operator()( const complex<double> &cplx )
      {
         value += real( cplx * exp( CONSTANT * loop * (double)index++) ) ;
      }

   friend ostream &operator<<( ostream &os, const Function &func )
   {
      os << (char)(func.value / 7) ;
      return os ;
   }
} ;

int main( )
{
   for( int k = 0; k < 14; k++ )
     cout << for_each( table, table + 8, Function(k) ) ;

   return 0 ;
}