Hi Boost,

I have implemented my own complex class wrapping around Boost.Multiprecision number<>, particularly mpfr_float.  Now, I'd like to take the class I've written, and extend/convert it into a backend suitable for use in number<>.  While I've read the documentation describing the requirements for a backend, and think I understand what I need to do, I have found 0 examples in the wild.

My current setup has a pair of files mpfr_complex.hpp, mpfr_complex.cpp describing something like (just what you'd expect, really)

---------
class complex{
    mpfr_float real_, imag_;

    public:
    // the *= family of operators, getters, setters,
    // some factory functions, etc
};

//the free operators defined down here, along with pow, exp, etc.

--------------

I think what I'd like to write is a new complex_backend.hpp file which implements the required functions for the complex wrapper around mpfr_float.  In this file, I believe I implement the family of functions such as
eval_multiply(b, a)
in terms of the operators for my complex class.  Is this right?

In a related vein, with et_on for mpfr_float, I've started adding templated overloads for the complex operators and math function accepting expressions of reals, and I think this is going to get out of hand, so using number<> would conceivably save me a ton of time writing my own functions.  It will also save me a ton of errors for hand-writing the expression templates for complexes, which appear to be ready to go from Boost.Multiprecision once I get a backend implemented.

Again, my goal is expression templates for complexes with real and imaginary fields consisting of mpfr_floats, leveraging the number<> template, with et_on, and my own backend.  Do you have any advice?  Any references to any other custom backends?  

Daniel Brake
University of Notre Dame
Applied and Computational Mathematics and Statistics