GY-63_MS5611/libraries/Complex/README.md
2021-11-08 13:19:48 +01:00

2.5 KiB

Arduino CI Arduino-lint JSON check License: MIT GitHub release

Complex

Arduino library for Complex mathematical operations.

Description

This library defines the complex data type and all the common mathematical functions for it.

These functions include basic = "+ - * /" and also power and goniometric functions.

The library implements the Printable interface so one can directly print the complex values in any stream e.g. Serial.

Interface

See Complex.h for a full list of functions implemented.

The library uses float for the real and imaginary part so precision is limited. Reasons are memory and performance, see also Future section below.

The library implements the constant one as this value is often used in the code.

Note

The library has a big footprint so it fills up the memory of an UNO quite fast, especially if all functionality is used.

Known problem

Issue found in version 0.1.9 - https://github.com/RobTillaart/Arduino/issues/90 Class does not compile for DUE and TEENSY Also Raspberry Pico - https://github.com/RobTillaart/Complex/issues/6

Apparently the name "Complex" is already in use (reserved) by some non-AVR compilers so it won't include the Complex.h file. Problem seen on Due and Teensy3.5

Solution

  • Make a copy of the Complex Library and rename the folder to CComplex
  • Rename Complex.h to CComplex.h
  • Rename Complex.cpp to CComplex.cpp
  • change one line in CComplex.cpp to include CComplex.h
  • note your sketches need to include CComplex.h too.

Future

  • create a (8 byte) double based variant for high precision e.g. Complex8()
    Note that some platforms map double to float, others support float in hardware etc
    so there is a big difference expected in both memory and performance
  • create the constant i ??