clens_cmplx.js 690 B

1234567891011121314151617181920212223242526272829303132
  1. import sinh from './sinh';
  2. import cosh from './cosh';
  3. export default function(pp, arg_r, arg_i) {
  4. var sin_arg_r = Math.sin(arg_r);
  5. var cos_arg_r = Math.cos(arg_r);
  6. var sinh_arg_i = sinh(arg_i);
  7. var cosh_arg_i = cosh(arg_i);
  8. var r = 2 * cos_arg_r * cosh_arg_i;
  9. var i = -2 * sin_arg_r * sinh_arg_i;
  10. var j = pp.length - 1;
  11. var hr = pp[j];
  12. var hi1 = 0;
  13. var hr1 = 0;
  14. var hi = 0;
  15. var hr2;
  16. var hi2;
  17. while (--j >= 0) {
  18. hr2 = hr1;
  19. hi2 = hi1;
  20. hr1 = hr;
  21. hi1 = hi;
  22. hr = -hr2 + r * hr1 - i * hi1 + pp[j];
  23. hi = -hi2 + i * hr1 + r * hi1;
  24. }
  25. r = sin_arg_r * cosh_arg_i;
  26. i = cos_arg_r * sinh_arg_i;
  27. return [r * hr - i * hi, r * hi + i * hr];
  28. }