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

Refactor Polynomials: Extract Method to Introduce RootFinder Factory Method and Tighten Encapsulation #322

Merged
merged 20 commits into from
Dec 25, 2023
Merged
Changes from 1 commit
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
9709c54
refactor: using Parallel Change, introduced a new message that return…
hemalvarambhia Dec 24, 2023
1487a64
refactor: migrated the client to no longer use roots message.
hemalvarambhia Dec 24, 2023
b8434f0
refactor: Extract Method where a method instantiates a root finding a…
hemalvarambhia Dec 24, 2023
eee00a7
refactor: made the method a class method. Next we can inline the inst…
hemalvarambhia Dec 24, 2023
ea7419e
refactor: Move Method to a more sensible place.
hemalvarambhia Dec 24, 2023
32ebd8a
refactor: Inline Method, as it has no clients.
hemalvarambhia Dec 24, 2023
218a2e5
refactor: clarified the name of the method.
hemalvarambhia Dec 24, 2023
91e14e3
style: corrected a Smalltalk code critique.
hemalvarambhia Dec 24, 2023
251c5b6
refactor: Inline Method as it has no clients.
hemalvarambhia Dec 24, 2023
8dbe917
refactor: Rename Method, and now we have the interface that a client …
hemalvarambhia Dec 24, 2023
6ebf707
style: removed redundant comment.
hemalvarambhia Dec 24, 2023
a585d96
refactor: Rename Variable - it looks like it is a root.
hemalvarambhia Dec 24, 2023
22005cb
test: added a simple test for x^2 + 2x + 1, whose roots are x = -1 an…
hemalvarambhia Dec 24, 2023
3dfdc8e
test: changed the example and added a comment to make it clear what t…
hemalvarambhia Dec 24, 2023
371e9c8
test: added some interesting and missing tests.
hemalvarambhia Dec 24, 2023
22e219c
fix: corrected the comment.
hemalvarambhia Dec 24, 2023
25ba113
test: clarified naming using domain language (repeated roots).
hemalvarambhia Dec 24, 2023
fc66d1d
fix: corrected a comment.
hemalvarambhia Dec 24, 2023
2fc4e5d
test: clarified the name of a test.
hemalvarambhia Dec 24, 2023
6de9e74
refactor: Rename Variable where we make the roles of the objects clea…
hemalvarambhia Dec 24, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 11 additions & 6 deletions src/Math-Polynomials/PMPolynomial.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,15 @@ PMPolynomial class >> coefficients: anArray [
^self new initialize: anArray reverse
]

{ #category : #information }
Copy link
Contributor

Choose a reason for hiding this comment

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

I'm not sure I would put this method on the class side but I could understand.
Now why the PMNewtonZeroFinder does not define a creation class method desiredPrecision: like that you do not need this method and the class PMNewtonZeroFinder gets improved.

Copy link
Contributor

Choose a reason for hiding this comment

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

I saw that you did it :)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, I had to take smaller steps in order to keep our tests green.

PMPolynomial class >> rootFindingAlgorithmWith: precision [

| rootFinder |
rootFinder := PMNewtonZeroFinder new.
rootFinder desiredPrecision: precision.
^ rootFinder
]

{ #category : #operation }
PMPolynomial >> * aNumberOrPolynomial [

Expand Down Expand Up @@ -240,12 +249,8 @@ PMPolynomial >> reciprocal [
]

{ #category : #information }
PMPolynomial >> rootFindingAlgorithmWith: precision [

| rootFinder |
rootFinder := PMNewtonZeroFinder new.
rootFinder desiredPrecision: precision.
^ rootFinder
PMPolynomial >> rootFindingAlgorithmWith: precision [
^ self class rootFindingAlgorithmWith: precision
]

{ #category : #information }
Expand Down