lots of exercises in java... from https://github.com/exercism/java

ComplexNumber.java 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. final class ComplexNumber {
  2. private final double real;
  3. private final double imag;
  4. ComplexNumber(double real, double imag) {
  5. this.real = real;
  6. this.imag = imag;
  7. }
  8. double getReal() {
  9. return real;
  10. }
  11. double getImag() {
  12. return imag;
  13. }
  14. ComplexNumber times(ComplexNumber other) {
  15. return new ComplexNumber(
  16. real * other.real - imag * other.imag,
  17. real * other.imag + imag * other.real);
  18. }
  19. ComplexNumber add(ComplexNumber other) {
  20. return new ComplexNumber(real + other.real, imag + other.imag);
  21. }
  22. ComplexNumber minus(ComplexNumber other) {
  23. return new ComplexNumber(real - other.real, imag - other.imag);
  24. }
  25. ComplexNumber div(ComplexNumber other) {
  26. return this.times(other.conjugate()).div(Math.pow(other.abs(), 2));
  27. }
  28. double abs() {
  29. return Math.hypot(real, imag);
  30. }
  31. ComplexNumber conjugate() {
  32. return new ComplexNumber(real, -imag);
  33. }
  34. ComplexNumber exponentialOf() {
  35. return new ComplexNumber(Math.cos(imag), Math.sin(imag)).times(Math.exp(real));
  36. }
  37. private ComplexNumber div(double factor) {
  38. return new ComplexNumber(real / factor, imag / factor);
  39. }
  40. private ComplexNumber times(double factor) {
  41. return new ComplexNumber(factor * real, factor * imag);
  42. }
  43. }