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

feat: add lapack/base/dlapy2 #2845

Open
wants to merge 2 commits into
base: develop
Choose a base branch
from

Conversation

Pranavchiku
Copy link
Member

Towards #2464.

Description

What is the purpose of this pull request?

This pull request adds JS implementation for lapack/base/dlapy2.

Related Issues

Does this pull request have any related issues?

NA

Questions

Any questions for reviewers of this pull request?

No.

Other

Any other information relevant to this pull request? This may include screenshots, references, and/or implementation notes.

No.

Checklist

Please ensure the following tasks are completed before submitting this pull request.


@stdlib-js/reviewers

@Pranavchiku Pranavchiku added Feature Issue or pull request for adding a new feature. Base Issue or pull requests related to "low-level" functionality oriented toward library consumers. JavaScript Issue involves or relates to JavaScript. LAPACK Issue or pull request related to the Linear Algebra Package (LAPACK). labels Aug 29, 2024
if ( isnan( x ) || isnan( y ) ) {
return NaN;
}
hugeval = dlamch( 'O' );
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Pranavchiku Isn't this a value a constant and can be elevated to the parent scope? I don't believe we need to call dlamch for each invocation.

```javascript
var randu = require( '@stdlib/random/base/randu' );
var round = require( '@stdlib/math/base/special/round' );

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Pranavchiku You are missing a require statement here.

* var v = dlapy2( -5.0, 12.0 );
* // returns 13.0
*/
function dlapy2( x, y ) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This implementation is effectively hypot. As such, I'd just have dlapy2 wrap that function. No need to reinvent the wheel.

if ( z === 0.0 || w > hugeval ) {
return w;
}
return w * sqrt( 1.0 + pow( ( z / w ), 2 ) );
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to use pow BTW. You can use abs2 which is much lighter weight.

@kgryte kgryte added the Needs Changes Pull request which needs changes before being merged. label Sep 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Base Issue or pull requests related to "low-level" functionality oriented toward library consumers. Feature Issue or pull request for adding a new feature. JavaScript Issue involves or relates to JavaScript. LAPACK Issue or pull request related to the Linear Algebra Package (LAPACK). Needs Changes Pull request which needs changes before being merged.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants