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

Verlet Integration: Output standardization #855

Merged
merged 18 commits into from
Sep 4, 2021

Conversation

stormofice
Copy link
Contributor

@stormofice stormofice commented Sep 3, 2021

This PR tries to standardize the different kinds of outputs to use the ones outlined in #824.

The following implementations are not [yet] standardized:

  • asm-x64 (done thanks to @leios)
  • haskell (done thanks to @jiegillet)
  • labview (does not have text output)
  • matlab (does not have text output)
  • scratch (does not have text output)

As I am not comfortable enough changing the asm/haskell code, someone else should take a look at these implementations.

I can confirm that every (standardized) implementation now produces the same [numerical] results as the julia one and that no md files need to be modified here.

Please review this carefully, as this kind of output standardization needs to be done for every chapter and this PR sets the ground rules for future optimizations.

This also fixes a previous bug, which caused the time and velocity
values to not get printed correctly.
I was not able to prevent the preceding whitespaces, but they can
just be trimmed.
As the original implementation only returned the time and not
the velocity, the code needed to be adjusted a bit. Now it returns
the two values as an array which gets deconstructed and printed.
@jiegillet
Copy link
Member

I can do Haskell. Shall I do a PR on your branch?

@stormofice
Copy link
Contributor Author

Sure, that would be nice. Thanks 😄

@jiegillet
Copy link
Member

jiegillet commented Sep 3, 2021

Oh, turns out I can push directly on your branch, sorry, I did it on accident.
EDIT: plus I made a mistake. Frightfully sorry. I'll be super duper more careful next time.

$ ghc --make verlet.hs && ./verlet

Loaded package environment from /Users/jie/.ghc/x86_64-darwin-8.10.2/environments/default
[1 of 1] Compiling Main             ( verlet.hs, verlet.o )
Linking verlet ...
[#] Time for Verlet integration is:
1.0000000000000007
[#] Time for Stormer Verlet integration is:
1.0000000000000007
[#] Velocity for Stormer Verlet integration is:
-9.994999999858166
[#] Time for velocity Verlet integration is:
1.0000000000000007
[#] Velocity for velocity Verlet integration is:
-9.999999999999831

@lazyprop
Copy link
Contributor

lazyprop commented Sep 3, 2021

@stormofice maybe you should make it an issue? Since there are multiple chapters that need standardization of output. I took a quick look some time ago, and a few that need this are:

  • Stable Marriage Problem
  • Jarvis Scan
  • Graham Scan
  • Tree Traversal

And possibly some more. I'll make a PR for one of them later today.

@Amaras Amaras added Implementation Edit This provides an edit to an algorithm implementation. (Code and maybe md files are edited.) lang: c C programming language lang: c++ C++ programming language lang: fortran Fortran programming language lang: go Go programming language lang: haskell Haskell programming language lang: java Java programming language lang: javascript Javascript programming language lang: julia Julia programming language lang: kotlin Kotlin programming language labels Sep 3, 2021
@Amaras Amaras added lang: lisp Lisp programming language lang: nim Nim programming language lang: python Python programming language lang: ruby Ruby programming language lang: rust Rust programming language lang: swift Swift programming language labels Sep 3, 2021
@stormofice
Copy link
Contributor Author

stormofice commented Sep 3, 2021

@lazyprop Do you mean creating an issue to get an overview on which chapters need to be reworked have their implementations standardized?
(edit: fixed wording)

@lazyprop
Copy link
Contributor

lazyprop commented Sep 3, 2021

"Rework" would be an overstatement. I just mean an issue to get an overview on which chapter need standardization of output. Because I think standardization is really important for the AAA. We can discuss the specifics more on that issue.

@leios
Copy link
Member

leios commented Sep 4, 2021

A general question I have (that might not be solved here) is about languages like Labview and Scratch with no text output. I guess we can write something to file and cat it?

Can we actually write to file in scratch?

@leios
Copy link
Member

leios commented Sep 4, 2021

Ok, stupid question... How did you push directly to the branch here @jiegillet?

@stormofice
Copy link
Contributor Author

stormofice commented Sep 4, 2021

@leios I think that there are some notes on scratch in the Style Guide, but I think we should ignore them for now

@leios leios marked this pull request as ready for review September 4, 2021 01:37
@ntindle
Copy link
Member

ntindle commented Sep 4, 2021

Ok, stupid question... How did you push directly to the branch here @jiegillet?

There’s a checkbox when you open a PR to allow others to push to it

@leios
Copy link
Member

leios commented Sep 4, 2021

I think I just accidentally pushed to the wrong branch. I should have pushed to stormofice's remote with the branch verlet-io-overhaul, right?

I think I accidentally tried to push to stormofice-verlet-io-overhaul instead

@ntindle
Copy link
Member

ntindle commented Sep 4, 2021

Idk what branch you meant to push to but its a bunch of git magic that lets this work on Github's side as far as I can tell

@leios
Copy link
Member

leios commented Sep 4, 2021

I guess I'm asking which remote to push to, or is it automatically set up to work with git push with no config?

Sorry for derailing the convo

@ntindle
Copy link
Member

ntindle commented Sep 4, 2021 via email

Copy link
Member

@leios leios left a comment

Choose a reason for hiding this comment

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

Everything seems to be good! Thanks for the hard work here!

@@ -91,18 +91,27 @@ SUBROUTINE velocity_verlet(pos, acc, dt, time, vel)
! Verlet
CALL verlet(pos, acc, dt, time)

WRITE(*,*) 'Time for Verlet integration: ', time
WRITE(*,*) '[#] Time for Verlet integration:'
Copy link
Member

Choose a reason for hiding this comment

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

At least with gfortran, this seems to add extra spaces at the start of the line, is this ok?

output looks like this:

 [#] Time for Verlet integration:
   1.0000000000000007     
 [#] Time for Stormer Verlet integration:
   1.0000000000000007     
 [#] Velocity for Stormer Verlet integration:
  -9.9999999999999805     
 [#] Time for velocity Verlet integration:
   1.0100000000000007     
 [#] Velocity for velocity Verlet integration:
  -10.099999999999980

Copy link
Member

Choose a reason for hiding this comment

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

I was told that these spaces can be ignored

@leios leios merged commit b8d4679 into algorithm-archivists:master Sep 4, 2021
@jiegillet
Copy link
Member

Can we actually write to file in scratch?

No, you can write to screen, or write to a list and right click on it to export it to a text file but... Is it worth it? :)

Ok, stupid question... How did you push directly to the branch here @jiegillet?

I used GitHub's CLI suggested when you clock "Open with" at the top right of this page and used gh pr checkout 855. Then I made some changes, forgot to make a new branch and just used git push.

leios added a commit that referenced this pull request Oct 25, 2021
* pep8ify python

* rename Tree_example.py

* standardize python output

* standardize c output

* standardize c++ output

* standardize rust output

* standardize javascript output

* standardize julia output

* Standardized Coconut output

* fix coconut

* standardize go output

* standardize common lisp output

* Verlet Integration: Output standardization (#855)

* Standardize julia output

* Standardize kotlin output

This also fixes a previous bug, which caused the time and velocity
values to not get printed correctly.

* Standardized c output

* Standardized cpp output

* Standardized lisp output

* Standardized fortran output

I was not able to prevent the preceding whitespaces, but they can
just be trimmed.

* Standardized go output

* Standardized java output

* Standardize javascript output

* Standardize nim output

* Standardize python output

* Standardize ruby output

As the original implementation only returned the time and not
the velocity, the code needed to be adjusted a bit. Now it returns
the two values as an array which gets deconstructed and printed.

* Standardize rust output

* Standardize swift output

* Standardized haskell output

* Standardized haskell output (no quote marks)

* attempt at fix for asm

Co-authored-by: Jérémie Gillet <jie.gillet@gmail.com>
Co-authored-by: James Schloss <jrs.schloss@gmail.com>

* standardize php output

* standardize swift output

* removed outdated comments in Coconut implementation

* standardize haskell output

* Fix asm exit codes (#858)

* standardize crystal output

* Flood fill in Coconut (#836)

* Added Barnsley fern in Coconut (+ .editorconfig for Coconut) (#814)

* Added the Jarvis march in Coconut (#734)

* Fix minor typo

* Change folder structure of convolutions (#861)

This puts every chapters' code into its own directory, which is
useful for automatic validation.

* standardize csharp output

* standardize java output

* fix php line numbers and python filename

* fix coconut and python line numbers

* fix minor bug in C

* fix labels and minor bug in go

* minor label fix in python

* Huffman encoding in Coconut (#732)

* Update README.md

Changing readme link to reflect change in twitch url

* Add C# implemenation for 1D Convolutions (#846)

* Add C# implemenation for 1D Convolutions

* Fix off by one error and julia line numbers

* Fix off by one error for linear convolutions

* Fix trailing zero

* Update contents/convolutions/code/csharp/1DConvolution.cs

Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>

* Update contents/convolutions/code/csharp/1DConvolution.cs

Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>

* Update contents/convolutions/code/csharp/1DConvolution.cs

Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>

* Update contents/convolutions/code/csharp/1DConvolution.cs

Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>

* Update contents/convolutions/code/csharp/1DConvolution.cs

Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>

* Update contents/convolutions/code/csharp/1DConvolution.cs

Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>

* Update contents/convolutions/code/csharp/1DConvolution.cs

Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>

* Update contents/convolutions/code/csharp/1DConvolution.cs

Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>

* Update contents/convolutions/code/csharp/1DConvolution.cs

Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>

* Update contents/convolutions/code/csharp/1DConvolution.cs

Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>

* Update contents/convolutions/code/csharp/1DConvolution.cs

Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>

* Update contents/convolutions/code/csharp/1DConvolution.cs

Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>

* Update contents/convolutions/code/csharp/1DConvolution.cs

Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>

* Add trailing new line

Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>

* IFS Common Lisp implementation (#722)

* first working version

* cleaned up the chaos-game function and added some helpfull comments

* changed the .md file and upped iterations

* Skeleton of the final solution

* Update contents/IFS/IFS.md

Co-authored-by: Eric Berquist <eric.berquist@gmail.com>

Co-authored-by: James Schloss <jrs.schloss@gmail.com>
Co-authored-by: Eric Berquist <eric.berquist@gmail.com>

* added MonteCarlo in PowerShell (#760)

* Add Rust implementation for The Barnsley Fern (#818)

* Add Rust implementation for The Barnsley Fern

* Change operators constants and add Cargo.toml

* Fix bug in matrix multiplication

Co-authored-by: James Schloss <jrs.schloss@gmail.com>

* changing barnsley.md to read the correct coconut file (#867)

* added approximate counting implementation in python (#866)

* added approximate counting implementation in python

* Update approximate_counting.py

* updating approximate_counting.py

* removed redundancies

* fixing linking issues in convolution chapter (#868)

* Add initial devcontainer (#862)

* small changes to convolutional theorem chapter and code to make things more reproduceable (#872)

* added convolutional theorem implementation in python (#869)

* added convolutional theorem implementation in python

* fixed chapter linking

* added comments to the code

* changed random distribution to sawtooth

* corrected previous commit

* fixed comments

Co-authored-by: James Schloss <jrs.schloss@gmail.com>

* Use `[#]\n` instead of `[#]` for human readable output (#873)

* Add approximate counting algorithm in C (#844)

* Add approximate counting algorithm in C

* Fix typo

Co-authored-by: stormofice <58337328+stormofice@users.noreply.github.com>

Co-authored-by: stormofice <58337328+stormofice@users.noreply.github.com>
Co-authored-by: James Schloss <jrs.schloss@gmail.com>

* added 1d convolution implementation in python (#874)

* added 1d convolution implementation in python

* fixed some mistakes in the code so it outputs correct results

* making the code look better

* spacing code properly for readability

* fixing 1d convolution markdown file (#879)

* Add racket setup to devcontainer (#875)

* Normalize inputs for scheme euclid algorithm (#878)

Change inputs to make it consistent with other examples.

* Add initial setup for Swift in devcontainer (#880)

* Add scheme setup to devcontainer (#876)

* Clean up Monte Carlo integration in Racket (#781)

* Clean up Monte Carlo integration in Racket

* Add blank lines in Monte Carlo integration in Clojure

* Change Racket lang include from lisp to racket

* Add C++ code for Flood Fill algorithm (#860)

* fixing chapter to use split-op code (#888)

* use [#]\n for readability

* Implemented stacks and queues in Java (#897)

* Java tree traversal: updated dfsRecursiveInOrderBinary (#899)

* Tree traversal in smalltalk (#453)

* fixed print statements (#901)

* Fixes in PATH that make dlang, emojicode and factor usable (#890)

* fixing huffman encoding for Julia and adding Test (#828)

* JavaScript tree traversal: updated dfsInorder (#902)

* julia: change printf to print

* pep8ify python

* rename Tree_example.py

* standardize python output

* standardize c output

* standardize c++ output

* standardize rust output

* standardize javascript output

Resolved conflict with master (by Amaras)

* standardize julia output

Resolved conflict with master (by Amaras)

* Standardized Coconut output

* fix coconut

* standardize go output

* standardize common lisp output

* standardize php output

* standardize swift output

* removed outdated comments in Coconut implementation

* standardize haskell output

* standardize crystal output

* standardize csharp output

* standardize java output

Resolved the conflict with fixing dfs

* fix php line numbers and python filename

* fix coconut and python line numbers

* fix minor bug in C

* fix labels and minor bug in go

* minor label fix in python

* use [#]\n for readability

* julia: change printf to print

* update Tree.java. remove MainClass.java

Co-authored-by: Sammy Plat <amaras@vivaldi.net>
Co-authored-by: stormofice <58337328+stormofice@users.noreply.github.com>
Co-authored-by: Jérémie Gillet <jie.gillet@gmail.com>
Co-authored-by: James Schloss <jrs.schloss@gmail.com>
Co-authored-by: Eric Berquist <eric.berquist@gmail.com>
Co-authored-by: Trashtalk217 <trashtalk217@gmail.com>
Co-authored-by: PaddyKe <34421580+PaddyKe@users.noreply.github.com>
Co-authored-by: Dimitri Belopopsky <ShadowMitia@users.noreply.github.com>
Co-authored-by: Ayman Lafaz <ayman.lafaz@um5r.ac.ma>
Co-authored-by: Nicholas Tindle <nicktindle@outlook.com>
Co-authored-by: Mahdi <24981501+mahdisarikhani@users.noreply.github.com>
Co-authored-by: Henrik Christensen <sensen1695@hotmail.com>
Co-authored-by: Neverik <neverliberty@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Implementation Edit This provides an edit to an algorithm implementation. (Code and maybe md files are edited.) lang: c++ C++ programming language lang: c C programming language lang: fortran Fortran programming language lang: go Go programming language lang: haskell Haskell programming language lang: java Java programming language lang: javascript Javascript programming language lang: julia Julia programming language lang: kotlin Kotlin programming language lang: lisp Lisp programming language lang: nim Nim programming language lang: python Python programming language lang: ruby Ruby programming language lang: rust Rust programming language lang: swift Swift programming language
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants