Unchained
mp-units
Our great sponsors
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Unchained
-
GNU Units
Anything with a finite (200 is small even) number of units misses the algebraic structure of the problem mentioned in https://news.ycombinator.com/item?id=36988497 wherein multiplying|dividing two things gives you a (potentially) new unit which implies an open ended "space" of units.
To be concrete (hah!), in C++ a template meta-type with 12 signed integer parameters (6 numerators & 6 denominators for rational exponents of SI base units) might be one way to model it.
Unlike C++ template stuff, Nim macros (like Lisp macros) makes metaprogramming more like procedural programming - just against abstract syntax trees. I think that helps to shield some of this type complexity from users, but the documentation README https://github.com/SciNim/Unchained does better job than I can in an HN comment.
Of course, for unit system conversion, the number of dimensions (6 in SI, 3 in CGS/Gaussian) changes. So, for full generality you need compile-time (if you want static type integration/CT errors) linear algebra over a rational field (at least & conventionally) to project|inverse project. That might be theoretically possible in C++. I would think it very un-fun and unlikely to ever have been done. There's probably a Mathematica package, though.
- Please Put Units in Names
- Pint: Makes Units Easy -Python
-
Atlas, a (hopefully) better engineering IDE
I've recently written a units library for Nim [0]. It's still WIP, but it's already proven extremely useful for me as a physicist.
Thanks to Nim's strong type system and metaprogramming features, it allows for a fully compile time design, without any runtime overhead (in form of special unit objects or such things; everything is a `distinct float`).
In addition Nim's unicode support, the code even looks nice!
A more complex use case (I can link more if desired): [1]
[0]: https://github.com/SciNim/Unchained/
[1]: https://github.com/SciNim/Unchained/tree/master/examples
mp-units
-
Is it just mean, or is C# easier to learn than JavaScript or even PHP?
It's not the type system you're complaining about, though. It takes a bit of work but you can write types that include units information with no loss of performance.
-
I'm a beginner making a library for unit conversion, contributions are welcome
I recommend using this as reference https://github.com/mpusz/units it probably solves the same or similar problem.
-
Why is this piece of code compiling with char as c-tor argument?
Yep. And there are some libraries to provide strong-type int, depending on what you need: type_safe or even units.
-
C++'s smaller cleaner language
Indeed you cannot. Then again, you couldn't write a library like fmtlib in C in the first place. I mean why do you complain about C++ features which enable you to write libraries you otherwise couldn't? How would you expect to implement equivalent libraries to EVE or mp-units in C alone?
-
I got curious about units of measure in programming languages so I recreated xkcd/687.
How does it compare with https://github.com/mpusz/units ?
-
C++ for Mathematicians
I don't have a book to recommend, but I have a fantastic library: https://github.com/mpusz/units
- Cheatsheet for the C++ core guidelines (philosophy)
- Compile-time C++ library for compile-time dimensional analysis, units/quantities
-
Please Put Units in Names
Good C++ library for that topic is [0]. You can even go further and combine with something like [1] which is super helpful for kalman filters and other stuff where you have heterogeneous units in one vector.
[0] https://github.com/mpusz/units
-
C++ lib for handling SI units
This seems to be on a progress to standardisation for c++23/26: https://github.com/mpusz/units
What are some alternatives?
SI - A header only C++ library that provides type safety and user defined literals for physical units
awesome-hpp - A curated list of awesome header-only C++ libraries
mosdepth - fast BAM/CRAM depth calculation for WGS, exome, or targeted sequencing
quantity
nimbus-eth1 - Nimbus: an Ethereum Execution Client for Resource-Restricted Devices
UNITS - a compile-time, header-only, dimensional analysis and unit conversion library built on c++14 with no dependencies.
nimview - A Nim/Webview based helper to create Desktop/Server applications with Nim/C/C++ and HTML/CSS
tinyobjloader - Tiny but powerful single file wavefront obj loader
zen
cpp-core-guidelines-cheatsheet - Cheatsheet for the C++ core guidelines, including a set of tried-and-true guidelines, rules, and best practices about coding in C++.
phpmnd - PHP Magic Number Detector