GY-63_MS5611/libraries/Complex/README.md
2022-10-30 11:11:07 +01:00

67 lines
2.5 KiB
Markdown

[![Arduino CI](https://github.com/RobTillaart/Complex/workflows/Arduino%20CI/badge.svg)](https://github.com/marketplace/actions/arduino_ci)
[![Arduino-lint](https://github.com/RobTillaart/Complex/actions/workflows/arduino-lint.yml/badge.svg)](https://github.com/RobTillaart/Complex/actions/workflows/arduino-lint.yml)
[![JSON check](https://github.com/RobTillaart/Complex/actions/workflows/jsoncheck.yml/badge.svg)](https://github.com/RobTillaart/Complex/actions/workflows/jsoncheck.yml)
[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/Complex/blob/master/LICENSE)
[![GitHub release](https://img.shields.io/github/release/RobTillaart/Complex.svg?maxAge=3600)](https://github.com/RobTillaart/Complex/releases)
# 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** ??