G’day friends,

 

The most recent sources I have seen for Fractint still uses C. I have migrated ManpWin to C++ so that I am able to use classes to simplify complex arithmetic, especially using arbitrary arithemetic. For example here is the header file for the BigComplex class:

 

// BigComplex.h: interface for the Complex Bignum class.

//

//////////////////////////////////////////////////////////////////////

 

#pragma once

 

#include    <math.h>

#include    "BigDouble.h"

 

#define           FALSE 0

#define           TRUE  1

#define           zerotol 1.e-50

 

class BigComplex

    {

    public:

      BigComplex(void)  { }

      BigComplex(const BigDouble & real, const BigDouble & imaginary)

          {

          x = real;

          y = imaginary;

          }

 

      BigComplex(const BigComplex & Cmplx1)// Copy Constructor

          {

          x = Cmplx1.x;

          y = Cmplx1.y;

          }

 

      BigComplex(const BigDouble & value)

          {

          x = value;

          y = 0;

          }

           

      ~BigComplex(void);

 

      BigComplex operator =(const BigComplex &);      // Assignment Operator

      BigComplex operator =(const BigDouble &); // Assignment to a double Operator

      bool     operator==(BigComplex &);

      BigComplex operator^(BigDouble &);

      BigComplex operator^(BigComplex &);

      BigComplex operator++(void);

      BigComplex operator +(const BigComplex &);      // Addition Operator

      BigComplex operator +(const BigDouble &); // complex add by double Operator

      BigComplex operator -(const BigComplex &);      // Subtraction Operator

      BigComplex operator -(const BigDouble &); // complex subtract by double Operator

      BigComplex operator -(void);              // unary minus

      BigComplex operator *(const BigComplex &);      // Multiplication Operator

      BigComplex operator *(const BigDouble &); // complex multiply by double Operator

      BigComplex operator /(const BigComplex &);      // Division Operator

      BigComplex operator /(const BigDouble &); // complex divide by double Operator

 

      BigDouble   x, y;

    };

 

extern      BigComplex  CSin(BigComplex  &);          // sine of a complex number

extern      BigComplex  CCos(BigComplex  &);          // cosine

extern      BigComplex  CSqr(BigComplex  &);          // square

extern      BigComplex  CCube(BigComplex  &);         // cube

extern      BigDouble   BigCSumSqr(BigComplex  &);    // real squared + imaginary squared

extern      BigDouble   BigCFabs(BigComplex  &);      // abs

extern      double            CSumSqr(BigComplex  &);       // real squared + imaginary squared

extern      double            CFabs(BigComplex  &);         // abs

extern      BigComplex  CPolynomial(BigComplex  &, int);// take a complex number to an integer power

extern      BigComplex  CInvert(BigComplex  &);       // invert

extern      BigComplex  CExp(BigComplex  &);          // exponent

extern      BigComplex  CLog(BigComplex  &);          // log

 

I am still developing it and have created 3 classes: Complex, BigDouble and BigComplex. These simplify fractal code immensely.

 

Is this of interest to anyone in the Fractint fraternity?

 

Regards,

 

Paul.

----------------------------------------------------------
Paul de Leeuw Computers     NSW Central Coast, Australia
Email:                             pdeleeuw@deleeuw.com.au
www:                           <http://www.deleeuw.com.au>
ABN                                         72 360 822 562
----------------------------------------------------------