Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Complex log function and power operator give wrong result #452

Closed
c3d opened this issue Oct 21, 2023 · 1 comment
Closed

Complex log function and power operator give wrong result #452

c3d opened this issue Oct 21, 2023 · 1 comment
Labels
bug Something isn't working done Things that are done on dev user Reported by an actual user, yay!

Comments

@c3d
Copy link
Owner

c3d commented Oct 21, 2023

Noticed trying to evaluate (2+i)^(2+i),
see this thread.

@c3d c3d added bug Something isn't working user Reported by an actual user, yay! labels Oct 21, 2023
c3d added a commit that referenced this issue Oct 21, 2023
When the change in complex representation was made to use internal powers of pi,
as well as to support angular modes, an internal uses of the `atan` function to
compute `pi` was left there by mistake. That function became sensitive to angle
mode. As an indirect result, the computation of `arg()` and any of its
derivative uses, including `log` or the exponentiation operator, would give the
wrong result when the angle mode was not radians.

This was not seen in the regression suite, which always runs this part of the
computation checks in radians...

Fixes: #452

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
@c3d c3d changed the title Complex log function and power operator are bogus Complex log function and power operator give wrong result Oct 21, 2023
@c3d c3d added the done Things that are done on dev label Oct 21, 2023
@c3d
Copy link
Owner Author

c3d commented Oct 21, 2023

When the change in polar representation was made to use fractions of pi for the argument, as well as to support angular modes, an internal uses of the atan function to compute pi was left there by mistake. That function became sensitive to angle mode. As an indirect result, the computation of arg() and any of its derivative uses, including log or the exponentiation operator, would give the wrong result when the angle mode was not radians.

This was not seen in the regression suite, which always runs this part of the computation checks in radians...

c3d added a commit that referenced this issue Oct 21, 2023
When the change in complex representation was made to use internal powers of pi,
as well as to support angular modes, an internal uses of the `atan` function to
compute `pi` was left there by mistake. That function became sensitive to angle
mode. As an indirect result, the computation of `arg()` and any of its
derivative uses, including `log` or the exponentiation operator, would give the
wrong result when the angle mode was not radians.

This was not seen in the regression suite, which always runs this part of the
computation checks in radians...

Fixes: #452

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
c3d added a commit that referenced this issue Oct 21, 2023
When the change in complex representation was made to use internal powers of pi,
as well as to support angular modes, an internal uses of the `atan` function to
compute `pi` was left there by mistake. That function became sensitive to angle
mode. As an indirect result, the computation of `arg()` and any of its
derivative uses, including `log` or the exponentiation operator, would give the
wrong result when the angle mode was not radians.

This was not seen in the regression suite, which always runs this part of the
computation checks in radians...

Fixes: #452

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
c3d added a commit that referenced this issue Oct 22, 2023
When the change in complex representation was made to use internal powers of pi,
as well as to support angular modes, an internal uses of the `atan` function to
compute `pi` was left there by mistake. That function became sensitive to angle
mode. As an indirect result, the computation of `arg()` and any of its
derivative uses, including `log` or the exponentiation operator, would give the
wrong result when the angle mode was not radians.

This was not seen in the regression suite, which always runs this part of the
computation checks in radians...

Fixes: #452

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
c3d added a commit that referenced this issue Oct 22, 2023
When the change in complex representation was made to use internal powers of pi,
as well as to support angular modes, an internal uses of the `atan` function to
compute `pi` was left there by mistake. That function became sensitive to angle
mode. As an indirect result, the computation of `arg()` and any of its
derivative uses, including `log` or the exponentiation operator, would give the
wrong result when the angle mode was not radians.

This was not seen in the regression suite, which always runs this part of the
computation checks in radians...

Fixes: #452

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
c3d added a commit that referenced this issue Oct 22, 2023
This release implements the last remaining user-oriented RPL data type,
unit objects. However, unit operations are not implemented yet.
There is no unit arithmetic nor unit conversions yet.

New features:
- Multi-line rendering of result level (#455)
- Render graphic objects in graphical rendering mode (#453)
- DM32 documentation is now distinct from DM42 (#450)
- Improvements to `FIX` rounding (#445, #446)
- Save editor state when using EXIT (#439)
- Add images in web documentation, skip them in on-line help (#438)
- Fixed-base based numbers now enabled on DB50X (#432)
- `Integrate` automatically enables approximations (#415)
- New `MinimumSignificantDigits` (`DIG`) setting (#412)
- Add `CursorBlinkRate` setting (#407)
- Unit objects and menus, but no arithmetic or conversions yet (#16)

Bug fixes:
- Graphical mode for stack rendering (still showing as "grey" intentionally)
- Computation of complex log / power when not in radians (#452)
- Merge the two "Help" sections in the documentation (#451)
- Do not emit error for `"ABC" 5 *` with `NumericResults` on (#447)
- Allow `PowerOff` and `Save` to work in Alpha mode (#444)
- Show `Help` as the command name when help topic not found (#440)
- Fixing in ordering of command-line history (#439)
- Avoid `Invalid digit for base` error for `1E6` (#422)
- Show correct symbol, `∡`, for Alpha-Shift-EEX (#421)
- Update menus when a setting changes (#416)

Improvements:
- Add `[]` inserter in matrix menu (#456)
- Leave one pixel blank on right of stack (#454)
- Machine-specific variations in the documentation (#450)
- Many minor changes and corrections in documentation
- Improvement to storytelling file (#448)
- Link DB48X YouTube playlist from documentation
- Update acknowledgements section
- Improve rendering of shift keys in built-in help (#437)
- Increase maximum size for big numbers (#426)
- Accept `LogGamma` as alternative spelling for `lgamma` (#426)
- Directly execute menu functions in direct mode (#420)
- Add `Authors` section in documentation (#419)
- Make on-line help accessible on GitHub and GitLab (#418)
- Rename simulator to `db48x` (#417)
- Add `∫` to `IntegrationMenu` entries (#414)

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
@c3d c3d closed this as completed in 40b2e0a Oct 22, 2023
c3d added a commit that referenced this issue Oct 22, 2023
This release implements the last remaining user-oriented RPL data type,
unit objects. However, unit operations are not implemented yet.
There is no unit arithmetic nor unit conversions yet.

New features:
- Multi-line rendering of result level (#455)
- Render graphic objects in graphical rendering mode (#453)
- DM32 documentation is now distinct from DM42 (#450)
- Improvements to `FIX` rounding (#445, #446)
- Save editor state when using EXIT (#439)
- Add images in web documentation, skip them in on-line help (#438)
- Fixed-base based numbers now enabled on DB50X (#432)
- `Integrate` automatically enables approximations (#415)
- New `MinimumSignificantDigits` (`DIG`) setting (#412)
- Add `CursorBlinkRate` setting (#407)
- Unit objects and menus, but no arithmetic or conversions yet (#16)

Bug fixes:
- Fix computation of 2^256 (#460)
- Use a unicode font for command name rendering (#459)
- Graphical mode for stack rendering (still showing as "grey" intentionally)
- Computation of complex log / power when not in radians (#452)
- Merge the two "Help" sections in the documentation (#451)
- Do not emit error for `"ABC" 5 *` with `NumericResults` on (#447)
- Allow `PowerOff` and `Save` to work in Alpha mode (#444)
- Show `Help` as the command name when help topic not found (#440)
- Fixing in ordering of command-line history (#439)
- Avoid `Invalid digit for base` error for `1E6` (#422)
- Show correct symbol, `∡`, for Alpha-Shift-EEX (#421)
- Update menus when a setting changes (#416)

Improvements:
- Improve generation of font file for more reliable builds (#458)
- Improve contrast of selected line in square menus (#457)
- Add `[]` inserter in matrix menu (#456)
- Leave one pixel blank on right of stack (#454)
- Machine-specific variations in the documentation (#450)
- Many minor changes and corrections in documentation
- Improvement to storytelling file (#448)
- Link DB48X YouTube playlist from documentation
- Update acknowledgements section
- Improve rendering of shift keys in built-in help (#437)
- Increase maximum size for big numbers (#426)
- Accept `LogGamma` as alternative spelling for `lgamma` (#426)
- Directly execute menu functions in direct mode (#420)
- Add `Authors` section in documentation (#419)
- Make on-line help accessible on GitHub and GitLab (#418)
- Rename simulator to `db48x` (#417)
- Add `∫` to `IntegrationMenu` entries (#414)

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working done Things that are done on dev user Reported by an actual user, yay!
Projects
None yet
Development

No branches or pull requests

1 participant