Arduino Due libraries (official and 3rd party)

ard_newbie:
I tried to upload this Library this way, and I think it works (at least, I have no error at compile time):

Open a new sketch that you can call Complex.ino :

//

//    FILE: complex.ino
//  AUTHOR: Rob Tillaart
//    DATE: 2013-09-23
//
// PUPROSE: test complex math
//
// Serial.print(Complex) supported since 0.1.05

#include "complex.h"

void setup()
{
  Serial.begin(115200);
  Serial.print("\n  Complex numbers test for Arduino: ");
  Serial.println(COMPLEX_LIB_VERSION);
  Serial.println("\n1. Print Complex, set, real, imag");

Complex c1(10.0, -2.0);
  Complex c2(3, 0);
  Complex c3(-10, 4);
  Complex c4(-5,-5);
  Complex c5(0, 0);

Serial.println(one);
  Serial.println(c1);
  Serial.println(c2);
  Serial.println(c3);
  Serial.println(c4);
  c3.set(0,0);
  Serial.println(c3);
  Serial.println(c3.real());
  Serial.println(c3.imag());

Serial.println("\n2. ==  != ");
  c5 = c1;
  if (c5 == c1) Serial.println("ok :)");
  else Serial.println(" fail :(");
  c5 = c1 + 1;
  if (c5 != c1) Serial.println("ok :)");
  else Serial.println(" fail :(");
  c5 = 3;
  if (c5 == 3) Serial.println("ok :)");
  else Serial.println(" fail :(");

Serial.println("\n3. negation - ");
  c5 = -c1;
  Serial.println(c5);
  c5 = -c5;
  Serial.println(c5);
  if (c5 == c1) Serial.println("ok :)");
  else Serial.println(" fail :(");

Serial.println("\n4. + - ");
  c5 = c1 + c2;
  Serial.println(c5);
  c5 = c1 + 3;
  Serial.println(c5);
  c5 = c1 - c2;
  Serial.println(c5);
  c5 = c1 - 3;
  Serial.println(c5);

Serial.println("\n5. * / ");
  c5 = c1 * c2;
  Serial.println(c5);
  c5 = c5 * 3;
  Serial.println(c5);
  c5 = c5 / c2;
  Serial.println(c5);
  c5 = c5 / 3;
  Serial.println(c5);

c5 = c1 / c2 * c2;
  Serial.println(c5);
  c5 = c1 * c4 / c4;
  Serial.println(c5);

Serial.println("\n6. assign += -= *= /=");
  c5 = c1;
  c5 += c1;
  Serial.println(c5);
  c5 += 3;
  Serial.println(c5);
  c5 -= c1;
  Serial.println(c5);
  c5 -= 3;
  Serial.println(c5);
  c5 *= c1;
  Serial.println(c5);
  c5 *= 3;
  Serial.println(c5);
  c5 /= c1;
  Serial.println(c5);
  c5 /= 3;
  Serial.println(c5);

Serial.println("\n7. phase modulus polar");
  Serial.println(c1);
  double m = c1.modulus();
  Serial.println(m);
  double p = c1.phase();
  Serial.println(p);
  c5.polar(m, p);
  Serial.println(c5);

Serial.println("\n8. conjugate reciprocal");
  c5 = c1.conjugate();
  Serial.println(c5);
  c5 = c5.conjugate();
  Serial.println(c5);
  c5 = c1.reciprocal();
  Serial.println(c5);
  c5 = c5.reciprocal();
  Serial.println(c5);

Serial.println("\n9. power: exp log pow sqrt sqr logn log10");
  c5 = c1.c_sqr();
  Serial.println(c5);
  c5 = c1.c_exp();
  Serial.println(c5);
  c5 = c5.c_log();
  Serial.println(c5);
  c5 = c1.c_pow(2);
  Serial.println(c5);
  c5 = c5.c_sqrt();
  Serial.println(c5);
  c5 = c5.c_sqr();
  Serial.println(c5);
  c5 = c1.c_pow(c2);
  Serial.println(c5);
  c5 = c5.c_pow(c2.reciprocal());
  Serial.println(c5);
  c5 = c5.c_logn(c4);
  Serial.println(c5);
  c5 = c4.c_pow(c5);
  Serial.println(c5);
  c5 = c5.c_log10();
  Serial.println(c5);

Serial.println("\n10. gonio: sin cos tan asin acos atan");
  c1.set(0.5, 0.5);
  c5 = c1.c_sin();
  Serial.println(c5);
  c5 = c5.c_asin();
  Serial.println(c5);
  c5 = c1.c_cos();
  Serial.println(c5);
  c5 = c5.c_acos();
  Serial.println(c5);
  c5 = c1.c_tan();
  Serial.println(c5);
  c5 = c5.c_atan();
  Serial.println(c5);

Serial.println("\n11. gonio csc sec cot acsc asec acot");
  c1.set(0.5, 0.5);
  c5 = c1.c_csc();
  Serial.println(c5);
  c5 = c5.c_acsc();
  Serial.println(c5);
  c5 = c1.c_sec();
  Serial.println(c5);
  c5 = c5.c_asec();
  Serial.println(c5);
  c5 = c1.c_cot();
  Serial.println(c5);
  c5 = c5.c_acot();
  Serial.println(c5);

Serial.println("\n12. gonio hyperbolicus I ");
  c1.set(0.5, 0.5);
  c5 = c1.c_sinh();
  Serial.println(c5);
  c5 = c5.c_asinh();
  Serial.println(c5);
  c5 = c1.c_cosh();
  Serial.println(c5);
  c5 = c5.c_acosh();
  Serial.println(c5);
  c5 = c1.c_tanh();
  Serial.println(c5);
  c5 = c5.c_atanh();
  Serial.println(c5);

Serial.println("\n13. gonio hyperbolicus II ");
  c1.set(0.5, 0.5);
  c5 = c1.c_csch();
  Serial.println(c5);
  c5 = c5.c_acsch();
  Serial.println(c5);
  c5 = c1.c_sech();
  Serial.println(c5);
  c5 = c5.c_asech();
  Serial.println(c5);
  c5 = c1.c_coth();
  Serial.println(c5);
  c5 = c5.c_acoth();
  Serial.println(c5);

Serial.println("\n.. Complex done");

uint32_t start = micros();
  for (int i=0; i<1000; i++)
  {
    c5 = c5.c_csc();
  }
  uint32_t dur = micros() - start;
  Serial.println(dur);
  Serial.println(one);
}

void loop()
{
}
//
// END OF FILE
//
/*  OUTPUT:

Complex numbers test for Arduino: 0.1.09

  1. Print Complex, set, real, imag
    1.000 0.000i
    10.000 -2.000i
    3.000 0.000i
    -10.000 4.000i
    -5.000 -5.000i
    0.000 0.000i
    0.00
    0.00

  2. ==  !=
    ok :slight_smile:
    ok :slight_smile:
    ok :slight_smile:

  3. negation -
    -10.000 2.000i
    10.000 -2.000i
    ok :slight_smile:

13.000 -2.000i
13.000 -2.000i
7.000 -2.000i
7.000 -2.000i

    • /
      30.000 -6.000i
      90.000 -18.000i
      30.000 -6.000i
      10.000 -2.000i
      10.000 -2.000i
      10.000 -2.000i
  1. assign += -= *= /=
    20.000 -4.000i
    23.000 -4.000i
    13.000 -2.000i
    10.000 -2.000i
    96.000 -40.000i
    288.000 -120.000i
    30.000 -6.000i
    10.000 -2.000i

  2. phase modulus polar
    10.000 -2.000i
    10.20
    -0.20
    10.000 -2.000i

  3. conjugate reciprocal
    10.000 2.000i
    10.000 -2.000i
    0.096 0.019i
    10.000 -2.000i

  4. power: exp log pow sqrt sqr logn log10
    96.000 -40.000i
    -9166.244 -20028.609i
    10.000 -2.000i
    96.000 -40.000i
    10.000 -2.000i
    96.000 -40.000i
    880.000 -592.000i
    10.000 -2.000i
    0.534 0.542i
    10.000 -2.000i
    1.009 -0.086i

  5. gonio: sin cos tan asin acos atan
    0.541 0.457i
    0.500 0.500i
    0.990 -0.250i
    0.500 0.500i
    0.404 0.564i
    0.500 0.500i

  6. gonio csc sec cot acsc asec acot
    1.078 -0.912i
    0.500 0.500i
    0.950 0.240i
    0.500 0.500i
    0.839 -1.172i
    0.500 0.500i

  7. gonio hyperbolicus I
    0.457 0.541i
    0.500 0.500i
    0.990 0.250i
    0.500 0.500i
    0.564 0.404i
    0.500 0.500i

  8. gonio hyperbolicus II
    0.912 -1.078i
    0.500 0.500i
    0.950 -0.240i
    0.500 0.500i
    1.172 -0.839i
    0.500 0.500i

.. Complex done
116805
1.000 0.000i

*/




and Inside the IDE window, click in the upper right Arrow to open a folder Inside this window that you call Complex.h . Copy and paste Complex.h from the original library inside Complex.h.

Click again in the upper right Arrow and add a new folder Inside Complex.ino that you call Complex.cpp . Copy and paste Complex.cpp from the original Library Inside Complex.cpp

Then compile, upload and run Complex.ino on your DUE.

I did a copy of the results at the end of Complex.ino above.

In the following link you will find the complex library that works on Arduino DUE, just read the ReleaseNote.txt. Your post @ard_newbie was very helpful to find this compilation mistake.